作者showyoulovex (zombie)
看板Programming
標題[問題] a[5],*b[5],(*c)[5] a++,b++,c++問題
時間Sat Oct 5 20:54:14 2013
如同標題
當
char a[5],*b[5],(*c)[5];
a++;
b++;
c++;
其中 a++和b++會有問題而c++沒問題
編譯器是寫lvalue required as increment operand
想問一下a,b詳細的不能被遞增的原因?
而c++又為何可以呢?請各位幫忙?
THX
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.164.218
1F:→ suhorng:C++也不行? 118.166.55.246 10/05 21:24
2F:→ azureblaze:array decay成pointer時是prvalue 1.34.63.98 10/05 21:31
3F:→ azureblaze:a和b是陣列,某些操作需先轉成指標 1.34.63.98 10/05 21:35
4F:→ azureblaze:轉成的指標存在一個暫存值中 1.34.63.98 10/05 21:36
5F:→ azureblaze:對他做更動沒有意義因此被禁止 1.34.63.98 10/05 21:36
6F:→ azureblaze:就像 (a+b)++;也不行 1.34.63.98 10/05 21:36
7F:→ suhorng:阿阿, 原來我把 c++ 誤以為是 C++ 了.. 118.166.62.3 10/05 22:03
8F:→ drm343:所以變數真的要好好取XD 36.236.19.155 10/06 00:50
抱歉那在問一下 *b[5] (*c)[5]差別在哪
※ 編輯: showyoulovex 來自: 36.239.221.162 (10/06 02:13)
9F:→ CindyLinz:b 是大小為5的陣列, 每個元素是 char* 112.121.80.249 10/06 03:32
10F:→ CindyLinz:c是一個指標, 可以指大小為5的char陣列 112.121.80.249 10/06 03:33
11F:推 steve1012:要記住 *這個符號是修飾前面 所以你要 114.34.202.142 10/16 23:38
12F:→ steve1012:修飾後面要括號 114.34.202.142 10/16 23:38