char a[10];
scanf("%s",a);
int i=0;
while(a[i]!='\0')
printf("\n%c",a[i++]); //similar to printf("%s",a);
char *b;
b=malloc(10*sizeof(char));
scanf("%s",b);
i=0;
while((b+i)!='\0')
printf("\n%c",*(b+i++)); //not similar to printf("%s",a);
对于输入“abcd”,第一个循环打印 a[] 与 printf() 一样。但对于 *b 来说,情况并非如此。
第二个循环持续了太多,直到遇到'\0'。
那么,这是否意味着 '\0' 会自动附加在字符串的末尾而不是 char 类型指针的末尾?
附加这个'\0'是谁的工作?编译器?