我想知道,如何在c中编写一个函数,为任何字符串输入返回 int 指针
以下功能是我尝试解决的要求
int* methodname(char* param)
{
int *a;
int b=3;
a=&b;
return a;
}
如有任何错误,请纠正我。
答案 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()
分配,因此必须释放它以避免任何内存泄漏。这可以在不再需要内存时完成。