在以下代码中:
#include <stdio.h>
int main(void) {
char* message = "Hello C Programmer!";
printf("%s", message);
return 0;
}
我不完全理解为什么不需要在
'*'
调用中预先将printf
消息置于message
之前。我假设char
,因为它是指向'H'
的指针,双引号字符串中的第一个字母,将显示的地址。 最佳答案
format运算符要求其相应的参数为指针。它打印从该地址开始的整个字符串。字符串是以空字节结尾的字符序列。这就是为什么这会打印出整个信息。
如果提供一个数组作为相应的参数,它将自动转换为指向数组第一个字符的指针。一般来说,当数组用作r值时,它会进行这种转换。
不需要使用%s
运算符,因为参数应该是指针。如果使用char *
,则只会将*
字符传递给*message
。如果使用的是'H'
格式而不是printf()
,则可以执行此操作--其对应的参数应该是a%c
。
关于c - 指向字符串的指针以及赋值和解引用之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56941207/