我知道在 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/