求达人指点 c语言指针问题
上代码
char x(char *a,char *b)
{
*a=15;
*b=16;
return 1;
}
char xx(char *a )
{
*a=115;
return 1;
}
int main(int argc, char *argv[])
{
char bb,*cc;
char b,*c,*d;
bb=xx(cc);
printf("cc %dn",*cc);
b=x(c,d);
printf("c %d d %dn",*c,*d);
}
输出执行答案:cc 115 后面一个print是乱码
求解
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(12)
由于你未分配存储空间,在函数中的赋值操作使指针指向的是临时空间,当你在函数外执行解引用时,指针所指向空间的值是未定义的,自然乱码。
这只是内存分配出现的一个巧合而已,建议看下内存分配的相关知识。
这种程度的用不上malloc吧?
这种程度的用不上malloc吧?
内存分配。
www.520ghost.com
由于你未分配存储空间,在函数中的赋值操作使指针指向的是临时空间,当你在函数外执行解引用时,指针所指向空间的值是未定义的,自然乱码。
char *c只是给c分配存储地址信息的空间而已
全部指针没有分配内存,cc=(char*)malloc(1);b=(char*)malloc(1);c=(char*)malloc(1);
这个代码在linux gcc下根本运行不了。。。
求高人帮助 谢谢
补充 后来我把该程序加到一个while里,放到powerpc平台上跑 输出cc 115 c 15 d 16 ,Trace/breakpoint trap 。然后进程自动退出了。
全部指针没有分配内存,cc=(char*)malloc(1);b=(char*)malloc(1);c=(char*)malloc(1);