我现在正在研究指针。所以,阵列是同时研究的。表示数组arr
的第一个元素的地址是&arr[0]
,也可以写成arr
。
但据我所知,字符串是一个字符数组,所以如果有一个字符串:
char string[] = "ilovejapan";
然后用printf打印出来
printf("%s", string);
不应该只是打印第一个地址吗?现在真的很困惑。
问题已更新:现在在下面的示例中,*W
指向 word,这意味着它指向字符串 word
的首地址,对吗?这如何访问完整的字符串 word
?
int getword(char *word, int lim)
{
int c, getch(void);
void ungetch(int);
char *W = word;
while (isspace(c = getch()))
;
if (c != EOF)
*W++ = c;
if (lisalpha(c)) {
*W = '\0';
return c;
}
for ( ; --lim > 0; W++)
if ( lisalnum(*W = getch())) {
ungetch ( *W) ;
break;
}
*W = '\0';
return word[O];
}
最佳答案
转换说明符 %s
说,“给我一个字符的地址。我将打印那个字符,然后查看下一个更高的地址并打印那个字符,依此类推,直到我正在查看的地址处的字符为零”。所以 string
确实是一个字符的地址,但是 printf
知道如何处理它。
关于c - 我对字符串感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24642706/