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

看板C_and_CPP (C/C++)作者 (Liou)時間11年前 (2015/04/12 15:42), 11年前編輯推噓3(307)
留言10則, 3人參與, 最新討論串1/1
假設整數陣列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; } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.251.0.70 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1428824569.A.E49.html ※ 編輯: elohacp4 (111.251.0.70), 04/12/2015 15:43:22

04/12 16:24, , 1F
這句可以分成兩段:*ptr=*ptr+10; ptr++;
04/12 16:24, 1F

04/12 16:25, , 2F
因為前面讓ptr = arr 所以一開始*ptr的值就是arr[0]
04/12 16:25, 2F

04/12 16:26, , 3F
因此*ptr=*ptr+10; 就是把arr[0]上的值加10
04/12 16:26, 3F

04/12 16:28, , 4F
然後ptr++; 就是把ptr往下移一格,例如從arr[0]移到
04/12 16:28, 4F

04/12 16:28, , 5F
arr[1]的位置,以此類推arr[0]~arr[4]
04/12 16:28, 5F
謝謝你。 ※ 編輯: elohacp4 (114.45.147.90), 04/12/2015 20:39:16

04/12 21:47, , 6F
不過這句應該犯了十三誡的第8項,拆開來寫比較不會出
04/12 21:47, 6F

04/12 21:48, , 7F
錯。可以看看置底文章。
04/12 21:48, 7F

04/13 22:30, , 8F
依我的理解,這應該沒有犯第8戒吧!
04/13 22:30, 8F

04/13 22:32, , 9F
因為ptr++更改的對象是ptr,而*ptr += 10更改的是*ptr
04/13 22:32, 9F

04/13 22:34, , 10F
這句也可以寫成*(ptr++)+=10;
04/13 22:34, 10F
文章代碼(AID): #1LAY7vv9 (C_and_CPP)
文章代碼(AID): #1LAY7vv9 (C_and_CPP)