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