提问:程序运行是怎样的
网友回答:
程序的运行结果为:
解析
主函数中数组 a[4]={1,2,3,4};a[0]~a[3],存放了1~4,a[4]未存放元素。
fun(int *a)函数的功能是对主函数中的a数组元素进行右循环移位,共四轮(i=4~1)。
i=4,第1轮循环移位的执行过程:for(j=M-1;j>=0;j--)
*(a+j+1)=*(a+j);
① j=M-1=3, *(a+j+1)=*(a+j);即 *(a+4)=*(a+3);也即a[4]=a[3];
②同理,有j=2时,a[3]=a[2];
③同理,有j=1时,a[2]=a[1];
④同理,有j=0时,a[1]=a[0];
最后,*a=k;实现了a[0]=a[3];即实现了循环移位。
输出的就是上面运行结果图中的第一行。
同理,
i=3,第2轮循环移位后,输出的就是上面运行结果图中的第二行。
i=2,第3轮循环移位后,输出的就是上面运行结果图中的第三行。
i=1,第4轮循环移位后,输出的就是上面运行结果图中的第四行(恢复为原数组元素)。