这题哪里错了?

来源:百度知道 编辑:UC知道 时间:2024/09/27 13:16:07
下面是书上照抄的,运行不出来。帮忙看一下,哪里错了?
#include"stdio.h"
#include<string.h>
fun(char *s)
{ char a[7];
s=a;
strcpy(a,"look");
}
main()
{ char *p;
fun(p);
puts(p);
}

VC++编译一下,出现下面问题,是什么意思?
local variable 'p' used without having been initialized

fun()函数中的a是个局部变量,退出函数后,a将消失,它的值也会消失,所以在puts时,会有不正确的结果。

fun()函数在改变s的时候并不会影响到主函数中p的值,在退出fun()后,主函数中的p依然是原来的地址,并不是fun()中a的地址,修改如下:

//---------------------------------------------------------------------------

#include"stdio.h"
#include<string.h>
fun(char **s)
{ static char a[7];
*s=a;
strcpy(a,"look");
}
main()
{ char *p;
fun(&p);
puts(p);
}
//---------------------------------------------------------------------------

你需要把p初始化一下;
如char *p=“”;

指针在定义之后是需要初始化的,你可以让他指向null,
即char *p = null;