云枭女 发表于 2020-12-29 09:24:31

询问C语言指针

char b[]="ABCD";
void main()
{char *chp;
for(chp=b;*chp;chp+=2)
printf("%s",chp);
printf("\n:);}
它的输出结果是什么呀?

肚子饿了233 发表于 2020-12-29 09:34:58

c

一世轻尘 发表于 2020-12-29 09:38:32

本帖最后由 一世轻尘 于 2020-12-29 09:41 编辑

ABCDCD
首先指针指向字符数组的首地址为真,你以%s的形式输出,所以输出了abcd然后此时指针指向首地址,值为a,然后执行chp+=2,使指针chp指向c,不为零为真,所以继续输出cd,然后在执行chp+=2,此时chp指向值为假,循环结束,所以输出abcdcd

云枭女 发表于 2020-12-29 14:45:50

一世轻尘 发表于 2020-12-29 09:38
ABCDCD
首先指针指向字符数组的首地址为真,你以%s的形式输出,所以输出了abcd然后此时指针指向首地址,值 ...

那个(;*chp;)的意思是什么呀?我有点不懂{:5_100:}

一世轻尘 发表于 2020-12-29 15:06:48

云枭女 发表于 2020-12-29 14:45
那个(;*chp;)的意思是什么呀?我有点不懂

没用过这种方式,我觉得应该是指针chp所指向的那个地址里的值如果是非零值,循环条件就为真,就可以循环,如果是0,'\0',NULL之类的就为假,就结束循环。
页: [1]
查看完整版本: 询问C语言指针