Scanf 进入指针
Scanf into pointer
我有这个代码:
char *ps = "hello";
scanf("%s", ps);
我想写一个字符串,让我们假装“a”为指针,而不使用数组。尝试将字符串扫描到 ps 会导致错误 被信号 10 中断:SIGBUS。我很乐意听到对这种行为的解释。
指针指向字符串文字
char *ps = "hello";
所以这个电话
scanf("%s", ps);
尝试更改字符串文字。
您不能更改字符串文字。任何更改字符串文字的尝试都会导致未定义的行为。
来自 C 标准(6.4.5 字符串文字)
7 It is unspecified whether these arrays are distinct provided their
elements have the appropriate values. If the program attempts to
modify such an array, the behavior is undefined
我有这个代码:
char *ps = "hello";
scanf("%s", ps);
我想写一个字符串,让我们假装“a”为指针,而不使用数组。尝试将字符串扫描到 ps 会导致错误 被信号 10 中断:SIGBUS。我很乐意听到对这种行为的解释。
指针指向字符串文字
char *ps = "hello";
所以这个电话
scanf("%s", ps);
尝试更改字符串文字。
您不能更改字符串文字。任何更改字符串文字的尝试都会导致未定义的行为。
来自 C 标准(6.4.5 字符串文字)
7 It is unspecified whether these arrays are distinct provided their elements have the appropriate values. If the program attempts to modify such an array, the behavior is undefined