[問題] 若ptr為整數型態指標 ptr+1 = = ptr ++ ?
各位版友好 想請問的是一個指標問題 是出自於國考
我在貴板有翻過相關文章 似乎沒有類似的 所以上來發文 希望沒有漏掉
若有 請告知 我會刪文 謝謝各位
_________________ 以下是問題 _______________________
宣告變數如下:
int array[3][2]={{10,20},{15,25},{50,40}};
int **ptr1=array;
int ptr
問以下運算結果為
(1)ptr1+1=&array[0];
答: 編譯錯誤,因為運算式不可置於=的左側 (因為運算式沒有L-value)
我的想法:
解答意思應該是指 左側要放的是一個記憶體位置 而不是一個運算式
如同你不能宣告 int a ; a+1=3; 一樣
但我小疑惑的是 指標比其他型態特殊的地方在於
指標若作運算 結果還是一個記憶體位置 例如: int *a;//若此時a=00XX8000;
若a=a+1;則a現值為00XX8004 還是一個記憶體位置 為何不能放在左側當做儲存位置呢?
若改為以下 ++ptr1=&array[0] 則會成立 因為相當於
ptr1=&array[0]; ptr1=ptr+1;
所以ptr++=&array[0];就會錯了 對吧?
__________________________________________________________________________
手邊不是自己電腦 不能編譯 所以上來請教大家 唉~ 有時候若能懂編譯器的實作原理
學程式真的會觀念更好更清楚一點 謝謝大家
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.42.27.5
推
06/14 23:08, , 1F
06/14 23:08, 1F
→
06/14 23:10, , 2F
06/14 23:10, 2F
→
06/14 23:10, , 3F
06/14 23:10, 3F
→
06/14 23:11, , 4F
06/14 23:11, 4F
→
06/14 23:12, , 5F
06/14 23:12, 5F
→
06/14 23:12, , 6F
06/14 23:12, 6F
推
06/14 23:16, , 7F
06/14 23:16, 7F
→
06/14 23:17, , 8F
06/14 23:17, 8F
→
06/14 23:19, , 9F
06/14 23:19, 9F
推
06/14 23:23, , 10F
06/14 23:23, 10F
→
06/14 23:27, , 11F
06/14 23:27, 11F
→
06/14 23:30, , 12F
06/14 23:30, 12F
推
06/14 23:32, , 13F
06/14 23:32, 13F
※ 編輯: Dsigma 來自: 114.42.27.5 (06/14 23:57)
推
06/15 00:48, , 14F
06/15 00:48, 14F
推
06/15 00:49, , 15F
06/15 00:49, 15F
→
06/15 00:49, , 16F
06/15 00:49, 16F
→
06/15 00:49, , 17F
06/15 00:49, 17F
推
06/15 01:00, , 18F
06/15 01:00, 18F
→
06/15 01:01, , 19F
06/15 01:01, 19F
→
06/15 01:02, , 20F
06/15 01:02, 20F
→
06/15 01:02, , 21F
06/15 01:02, 21F
推
06/15 01:06, , 22F
06/15 01:06, 22F
→
06/15 01:06, , 23F
06/15 01:06, 23F
→
06/15 01:07, , 24F
06/15 01:07, 24F
→
06/15 01:43, , 25F
06/15 01:43, 25F
→
06/15 01:44, , 26F
06/15 01:44, 26F
推
06/15 01:45, , 27F
06/15 01:45, 27F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):