c语言中为什么用scanf()给已用字符串初始化的指针变量赋值会出错?

时间:2014.11.12 发布人:cxr.126

c语言中为什么用scanf()给已用字符串初始化的指针变量赋值会出错?

已解决问题

谷歌cxr.126用户在2014.11.12提交了关于“越狱第一季c语言中为什么用scanf()给已用字符串初始化的指针变量赋值会出错?”的提问,欢迎大家涌跃发表自己的观点。目前共有3个回答,最后更新于2025-02-24T09:36:20。

c语言中,

为什么

char*p="abcd";

p="efgh";//这样可以。

编译会通过,执行结果正确

char*p="abcd";

scanf("%s",p)//这样不可以?

编译会通过,但是执行会出错?


希望大家能够帮助她。

详细问题描述及疑问:

c语言中,

为什么

char*p="abcd";

p="efgh";//这样可以。

编译会通过,执行结果正确

char*p="abcd";

scanf("%s",p)//这样不可以?

编译会通过,但是执行会出错?


期待您的答案,没有什么华丽的语言,但是我对你的感谢不会减少 !
希望以下的回答,能够帮助你。

第1个回答

用户名:whoami19来自78  

p是一个字符串指针,它可以指向常量字串或字串变量,但你华南这样

char*p="abcd";

它是指向一个常量区,它的内容是只读的(特殊情况下,它也是可读的,这个与平台有关)

所以用

scanf("%s",p入科待获持议);改变它的内容时,就要出错

定你这样可以

chara[10];

char*职搞致米钟轮既英雷p="abcd";

p=a;

scanf("%s",p);

但尽量不要这样用,因为你指向的"abcd"被丢弃了

第2个回答

用户名:粒业浓展致齐频M苍月M  

用P=“abcd♀味着把字符串的地址赋给了指针变量P

应该不能直接赋值吧磁线。。只能存地址

第3个回答

用户名:匿名用户  

printf("%s",日即严教学p)