接受字符串参数和 returns 整数指针的函数

A function that takes string parameter and returns integer pointer

我想知道,如何在 c 中编写一个函数 return int 指针用于任何 string 输入

下面的函数是我尝试解决的需求

int* methodname(char* param)
{
  int *a;
  int b=3;
  a=&b;
  return a; 
}

如有错误请指正

根据你的要求。此代码接受一个 char*(字符指针)和 returns 一个 int*(指向 int 的指针)。

int* methodname(char* param)
{
    int* b = malloc(sizeof(int));
    *b = 3;
    return b; 
}

注意

您的代码与此代码之间的区别在于,您的代码返回 int 指向局部变量的指针。局部变量将在函数退出后销毁。在这个例子中,变量是通过malloc()分配的。通过 malloc() 分配的内存在函数调用之间保留。

我建议通过 C 中的作用域规则。

编辑

C 中没有所谓的 string*。以 '[=18=]' (NUL) 结尾的 char 数组被视为 string .

由于 int 的内存是由 malloc() 分配的,因此必须释放它以避免任何内存泄漏。当不再需要内存时可以这样做。

返回本地地址未定义,参考下面的代码。

int* methodname(char* param)
{
  int *p = malloc(5*sizeof(int));
  . . .
  return p; 
}

你的声明还可以,但定义没意义,面试官问这种问题的主要目的是看你的编程水平,但你的定义不会打动他,写个粗体(主要是语法) ,你是如何返回的并且没有未定义的行为)而不是实现无用的代码。

在问题的定义中,函数没有任何功能,以下是没有 mallocs 或未定义行为的正确实现:

int* methodname(char* param)
{
    return ((int *)param);  // just return the param as a pointer to int
}