c语言问题指针加循环

img


这个循环如何理解,循环如何结束

这个while循环等价于
while(*(str1+i) != '\0'){
}

img

可在最后一句前插入:printf("\n%d",i); 看一下i的值

#include<stdio.h>
int main()
{
    char *str1="hello",*str2;
    int i=0;
    str2=str1;
    puts(str2);
    str1="world";
    if(str1!=str2)
        printf("str1<>str2\n");
    while(*(str1+i))
        printf("%c",str1[i++]);
    printf("\n%d",i);
    return 0;
}

(str1+i) 其中i=0,1,2,3,....
逐个遍历str1字符串的每个字母,直到
(str1+i)=='\0'循环结束,此时i==5。
字符串都有结束符的。

  1. 循环的作用是输出str1所有字符;
  2. while 条件是根据str1+i指针是否为空,不为空则输出当前字符;
  3. i++ 先输出字符,再i=i+1