gpt4 book ai didi

c - 为什么将字符串直接传递给 printf 可以正常工作?

转载 作者:太空狗 更新时间:2023-10-29 15:21:32 26 4
gpt4 key购买 nike

我知道在 C 中这两个都有效:

char* string = "foo";
printf("string value: %s", string);

更简单地说:

printf("string value: %s", "foo");

但我在问自己为什么。

我知道 %s 标识符期望参数是一个 char*,而 string 实际上是(它与字符数组相同,因为这两种数据类型在 C 中非常相同)

但是当我直接将一个字符串传递给 printf 时,它不应该有所不同吗?我的意思是 "foo" 不再是一个指针...对吧?

最佳答案

字符串常量 "foo" 的类型为 char []。当传递给函数时,数组会衰减为指针,即 char *。因此,您可以将它传递给期望相同的函数。

同理,你也可以传一个这种类型的变量:

char string[4] = "foo";
printf("string value: %s", string);

关于c - 为什么将字符串直接传递给 printf 可以正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38001846/

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