猿问

请教各位一个问题,求解答:c 指针运算的过程求解答!

代码如下:
#include
#defineMAX10
inti_array[MAX]={0,1,2,3,4,5,6,7,8,9};
int*i_p,count;
floatf_array[MAX]={.0,.1,.2,.3,.4,.5,.6,.7,.8,.9};
float*f_p;
intmain(void)
{
i_p=i_array;
f_p=f_array;
for(count=0;count{
printf("%d\t%f\n",*i_p++,*f_p++);
}
return0;
}
``
求解*i_p++和*f_p++的执行过程,怎么从指向第一个元素到最后把下一个元素输出的?
绝地无双
浏览 293回答 2
2回答

FFIVE

i_p=i_array;*i_p=i_array[0];*i_p++=*(i_p+1)=*i_p+sizeof(int)*1=i_array[1]

蛊毒传说

在c语言中后缀自增++的优先级高于解引用*的优先级,所以先做++,再*,即*(ip++),c语言运算符可以参考这里;自增操作有两种情况,如果++符号在后面ip++,则ip先进行复制返回,再执行ip=ip+1,如果++符号在前面++ip,则执行ip=ip+1,然后返回。所以*ip++可以看成两步:(1)返回*ip的值;(2)根据ip的类型移向下一个元素;代码中printf输出的就是第(1)步中的值。如果ip指向比较复杂的类型,则++ip省去复制的操作会更加高效;可以参考这里
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答