gpt4 book ai didi

c - 如何用指针理解字符串

转载 作者:行者123 更新时间:2023-12-04 10:51:03 26 4
gpt4 key购买 nike

最近几个月我一直在学习 C 语言。我正在使用一本书,我有这个练习:

char vector[N_STRINGS][20] = {"ola", "antonio", "susana"};
char (*ptr)[20] = vector;
char *p;

while(ptr-vector<N_STRINGS)
{
p = *ptr;
while(*p)
putchar(*p++);
putchar('\n');
ptr++;
}

我明白除了 while(*p) 之外的一切!我不知道是什么 while(*p)是在做。

最佳答案

变量 p在您的代码中定义为指向 char 的指针.得到实际charp指向,您需要取消引用该指针,使用 *运算符(operator)。

因此,您的 while 中的表达式循环,*p评估 - 在每个循环的开始 - 到 char变量p当前 指向。在循环内部,putchar call 也使用了这个解引用操作符 但随后增加指针的值 因此,在将该字符发送到输出后,指针会递增(++ 运算符),然后指向字符串中的下一个字符。

传统上(实际上,几乎总是),C 中的字符串是 NUL - 终止,意味着字符串的结尾是通过在字符串末尾有一个值为 0 的字符来表示的。

while您的代码中的循环到达此 NUL终止符,表达式的值 *p因此将为零。并且,由于零相当于 C 中的逻辑“假” (任何非零值都被认为是“真”),while循环将结束。

随时要求进一步澄清和/或解释。

关于c - 如何用指针理解字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59472660/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com