[問題] 指標與一維陣列的題目

作者: 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