C语言求大神帮忙! 下面程序的运行结果:请问为啥是D啊?求详细解析【】表示空格

#include<stdio.h>#include<string.h>voidfun(char*s){chara[7];s=a;strcpy(a,"look");}int... #include <stdio.h>
#include <string.h>
void fun(char *s)
{
char a[7];
s=a;
strcpy(a,"look");
}
int main()
{
char *p=NULL;
fun(p);
puts(p);
return 0;
}
A)look【】【】【】;B)look;C)look【】【】;D)不确定的值
展开
 我来答
cayido001
2016-09-02 · TA获得超过172个赞
知道小有建树答主
回答量:210
采纳率:100%
帮助的人:223万
展开全部
因为你的char a[7] 是栈里系统分配的内存 在函数结束就会释放
你把指针改为系统分配的内存地址 在函数结束后就会失效,在释放后 自然这指针指向的值就会不正确,这种是典型的指针的错误用法。
匿名用户
2016-09-02
展开全部
看来也只能选D了。fun函数中 s=a 只是修改了形参s的值,并不能修改main中实参p的值。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式