gpt4 book ai didi

c - 为什么 printf 对于 NULL 字符串失败?

转载 作者:行者123 更新时间:2023-11-30 20:14:31 26 4
gpt4 key购买 nike

我在我的 Linux 机器上运行了以下测试。

测试1:

printf("test %s\n", NULL);
printf("test %s\n", NULL);

打印:

test (null)
test (null)

测试2:

printf("%s\n", NULL);
printf("%s\n", NULL);

打印

Segmentation fault (core dumped)

以上测试有什么区别?为什么上面的测试 1 中没有抛出段错误?

我无法理解为什么在第二次测试中,它无法打印?

最佳答案

在编译器中启用警告。您没有打印您认为的内容。

我的编译器很乐意通知您(在这两种情况下):

warning: reading through null pointer (argument 2) [-Wformat]
warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘void *’ [-Wformat]

正如红色警报所说,警报!,你所做的是未定义的行为。

此外,请务必检查链接的 answer以获得更详细的答案,这离我不远。

关于c - 为什么 printf 对于 NULL 字符串失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26049393/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com