Cai*_*inG 0 c string printf pointers
在下面的代码中:
#include <stdio.h>
int main(void) {
char* message = "Hello C Programmer!";
printf("%s", message);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我不完全理解为什么没有必要'*'在printf通话中添加to消息。我是在假设条件下message,因为它是一个指针char,双引号字符串中的第一个字母,将显示该地址的'H'。
的%s格式运算符要求其相应的参数作为一个char *指针。它打印从该地址开始的整个字符串。字符串是一系列以空字节结尾的字符。这就是为什么会打印整个消息的原因。
如果提供数组作为相应的参数,它将自动转换为指向数组第一个字符的指针。通常,每当将数组用作r值时,都会进行此转换。
您不需要使用*运算符,因为参数应该是指针。如果您使用*message过,则只能将'H'字符传递给printf()。如果您使用的是%c格式而不是%s- 您将执行此操作-其对应的参数应为char。