早教吧作业答案频道 -->其他-->
一个C指针问题#include#defineN10int*fun(inta[N],intn){intb[N];returnb;}main(){intw[N],*p;p=fun(w,n);}这个程序把b当函数反回值,指针P指向B数组首地址,但结果P却变成了无向指针,我不明
题目详情
一个C指针问题#include #define N 10 int *fun (int a[N],int n) { int b [N]; return b; } main () { int w[N],*p; p=fun (w,n); } 这个程序把b当函数反回值,指针P指向B数组首地址,但结果P却变成了无向指针, 我不明白的是,在P指向FUN之前,B以经反回给了FUN了,P指向FUN应该是没错的,为什么P成了无向指针了?
▼优质解答
答案和解析
这里牵扯到了一个局部变量的问题, 楼主看你的fun函数,b只是一个局部数组,它的生存区间是在fun函数中,当fun函数返回时,也就是意味着fun函数结束了,那么此时它的局部变量还存在么 b本来(指fun函数结束之前)的内存已经被释放掉了,你说p现在指向了哪儿了?? 你可以在b声明的时候加上个static修饰符就不会出现这个问题了
看了 一个C指针问题#includ...的网友还看了以下:
答案是A,能解释一下为什么吗?谢谢阅读如下程序段,这个程序在编译的时候会有一个警告,下列关于这个警 2020-07-22 …
一个C指针问题#include#defineN10int*fun(inta[N],intn){in 2020-07-23 …
9.下列对一维数组a的正确说明语句为(D)。A)inta(10);B)intn=10,a[n];C 2020-08-03 …
C++.............................1.以下对一维数组a的正确定义是( 2020-08-03 …
《关于C语言中一维数组的定义与引用的问题》有两个例子:A:intn;scanf(“%d”,&n); 2020-08-03 …
赋值语句n=n+1的意思是()A.n等于n+1B.n+1等于nC.将n的值赋给n+1D.将n的值增加 2020-12-31 …
赋值语句n=n+1的意思是()A.n等于n+1B.n+1等于nC.将n的值赋给n+1D.将n的值增加 2020-12-31 …
赋值语句N=N+1的意义是()A.N等于N+1B.N+1等于NC.将N的值赋给N+1D.将N的原值加 2020-12-31 …
赋值语句n=n+1的意思是()A.n等于n+1B.n+1等于nC.将n的值赋给n+1D.将n的值增加 2020-12-31 …
赋值语句n=n+1的意思是()A.n等于n+1B.n+1等于nC.将n的值赋给n+1D.将n的值增加 2020-12-31 …