接受字符串参数和 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
}
我想知道,如何在 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
}