[问题] 指标与一维阵列的题目

楼主: elohacp4 (Liou)   2015-04-12 15:42:47
假设整数阵列arr宣告为
int arr[5]={54,22,44,18,01};
试宣告一个指向整数的指标ptr指向阵列arr,然后利用指标的算术运算
,将阵列arr里每一个元素的值加上10,并打印出结果。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int arr[5]={54,22,44,18,01};
int i,*ptr=arr;
for(i=0;i<5;i++)
*ptr=*(ptr++)+10; <====这行我看不懂再说什么意思
printf("运算后阵列的内容为");
for(i=0;i<5;i++)
printf("%d ",arr[i]);
printf("\n");
system("pause");
return 0;
}
作者: penknifelee (狂禅)   2015-04-12 16:24:00
这句可以分成两段:*ptr=*ptr+10; ptr++;因为前面让ptr = arr 所以一开始*ptr的值就是arr[0]因此*ptr=*ptr+10; 就是把arr[0]上的值加10然后ptr++; 就是把ptr往下移一格,例如从arr[0]移到arr[1]的位置,以此类推arr[0]~arr[4]
作者: zxc1020305 (理解不能)   2015-04-12 21:47:00
不过这句应该犯了十三诫的第8项,拆开来写比较不会出错。可以看看置底文章。
作者: OPIV (Monitor)   2015-04-13 22:30:00
依我的理解,这应该没有犯第8戒吧!因为ptr++更改的对象是ptr,而*ptr += 10更改的是*ptr这句也可以写成*(ptr++)+=10;

Links booklink

Contact Us: admin [ a t ] ucptt.com