我收到了这段代码:
const char *newLine = "\n";
printf('Content: %c\n', *newLine);
现在发生的是内存错误。
为什么会这样?
答案 0 :(得分:1)
代码因内存错误(分段错误)而崩溃,因为printf
期望以空字符结尾的字符串作为第一个参数(即指向以零字节结尾的某些字符的有效地址),但是您正在通过一个(有效随机)整数,它不是一个有效的地址(除非你非常非常幸运: - )。
正如人们评论的那样,使用双引号传递编译器在某处分配的实际字符串:
const char *newLine = "\n";
printf("Content: %c\n", *newLine);