一个接受字符串参数并返回整数指针的函数

时间:2015-08-31 09:09:42

标签: c string function pointers int

我想知道,如何在c中编写一个函数,为任何字符串输入返回 int 指针

以下功能是我尝试解决的要求

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

如有任何错误,请纠正我。

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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

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

你的声明没问题,但定义没有意义,如果有任何面试官问这样的问题,他们的主要目的是检查你的编程技巧,但你的定义不会给他留下深刻的印象,只是写粗略的主体(主要集中于语法,如何你正在返回并且没有未定义的行为)而不是实现无用的代码。

答案 2 :(得分:0)

根据你的要求。此代码接受char*(char指针),并返回int*(指向int的指针)。

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

注意

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

我建议在C中查看范围规则。

修改

C中没有任何名为string*的内容。char的数组'\0'NUL)被视为string。< / p>

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