求教这一段C程序

来源:百度知道 编辑:UC知道 时间:2024/06/19 17:01:04
main()
{ char *x="abcdefghi";
char *s="efg";
strcpy(x,s);

printf("%s\n",x);
}
编译没有错,但执行什么输出都没有,为什么?请高手指教!

因为运行出错了

字符串x这么定义的话,x指针指向一个常量区(字符串“abcdefghi”)
所以用s的内容给常量区赋值,出错

应该改成
char x[]="abcdefghi";
的方式进行初始化,那么x就指向一个栈区,
用s的内容赋值就没有问题了

指针是不能这样用的

还有最后句 printf("%s\n",*x);

如果是 *x的话,指针首地址不确定,所以不会有输出值后输出错误

main()
{
char x[]="abcdefghi";
char *s="efg";

strcpy(x,s);

printf("%s\n",x);
}

指针使用错误,
这样就ok了

binglong168 - 初入江湖 三级
这个说得对