一道C的单选,麻烦每个选项都解释一下(对的为什么对,错的错在哪儿了)
以下哪个函数是不正确的(与能否被编译无关)?A.int*f(int*p){return(int*)malloc(sizeof(int));}B.int*f(int*p){...
以下哪个函数是不正确的(与能否被编译无关)?
A.
int* f(int *p)
{
return (int*)malloc(sizeof(int));
}
B.
int* f(int *p)
{
return NULL;
}
C.
int* f(int *p)
{
int i;
return &i;
}
D.
int* f(int *p)
{
return p;
} 展开
A.
int* f(int *p)
{
return (int*)malloc(sizeof(int));
}
B.
int* f(int *p)
{
return NULL;
}
C.
int* f(int *p)
{
int i;
return &i;
}
D.
int* f(int *p)
{
return p;
} 展开
3个回答
展开全部
C不正确。
函数声明 int* f(int*), 为一接收一int型指针类型参数且返回int型指针的函数。
A. 返回了一个malloc出来的,大小为sizeof(int)的int型指针,正确;
B. 返回空指针,正确。
D. 返回传入的int型指针p,正确。
C. 返回局部int型变量的地址,语法上正确,编译也可以通过。但是,局部变量在函数结束会销毁,那么返回的指针指向的内容便不确定了。使用这样的指针其结果是未定义的,程序可能异常可能崩溃,运气好的话也可能正常。
函数声明 int* f(int*), 为一接收一int型指针类型参数且返回int型指针的函数。
A. 返回了一个malloc出来的,大小为sizeof(int)的int型指针,正确;
B. 返回空指针,正确。
D. 返回传入的int型指针p,正确。
C. 返回局部int型变量的地址,语法上正确,编译也可以通过。但是,局部变量在函数结束会销毁,那么返回的指针指向的内容便不确定了。使用这样的指针其结果是未定义的,程序可能异常可能崩溃,运气好的话也可能正常。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询