c - 我对字符串感到困惑

标签 c string

我现在正在研究指针。所以,阵列是同时研究的。表示数组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/

相关文章:

c - 如何反转 R_X86_64_JUMP_SLOT 重定位?

用于休眠函数的 Python C 扩展

c++ - 铛。如何克服 "unknown builtin"错误消息

java - 存储大于 127 的整数的批处理重复项的内存有效方法

c# - 如何读取字符串直到逗号,然后保存该位并显示它?

C++字符串数组作用域问题

java - String 类如何覆盖 + 运算符?

c# - 在 C# 中将包含项目和值的字符串拆分为字典

c - 在 C 中手动从递归获取输出

c - 为什么在链表的 C 实现中需要指针?