buffer
是一个数组,那么在 printf("%s\n", buffer);
中,buffer
会被当作一个指向数组首元素的指针来处理。C 语言在大多数情况下,当数组作为参数传递给函数(包括像 printf
这样的标准库函数)时,会发生数组到指针的隐式转换。所以这里的 buffer
实际上被当作指向其第一个元素的指针,然后 printf
函数会按照字符串的格式从这个指针所指的位置开始输出字符,直到遇到 '\0'
(字符串结束标志)为止。
#include <stdio.h>
void main(void)
{
char buffer[81];
int i, ch;
printf("Enter a line: ");
/* Read in single line from "stdin": */
for (i = 0; (i < 80) && ((ch = getchar()) != EOF)&& (ch != '\n'); i++)
buffer[i] = (char)ch;
/* Terminate string with null character: */
buffer[i] = '\0';
printf("%s\n", buffer);
}