[問題] a[5],*b[5],(*c)[5] a++,b++,c++問題

看板Programming作者 (zombie)時間10年前 (2013/10/05 20:54), 編輯推噓1(1011)
留言12則, 5人參與, 最新討論串1/1
如同標題 當 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

10/05 21:24, , 1F
C++也不行?
10/05 21:24, 1F

10/05 21:31, , 2F
array decay成pointer時是prvalue
10/05 21:31, 2F

10/05 21:35, , 3F
a和b是陣列,某些操作需先轉成指標
10/05 21:35, 3F

10/05 21:36, , 4F
轉成的指標存在一個暫存值中
10/05 21:36, 4F

10/05 21:36, , 5F
對他做更動沒有意義因此被禁止
10/05 21:36, 5F

10/05 21:36, , 6F
就像 (a+b)++;也不行
10/05 21:36, 6F

10/05 22:03, , 7F
阿阿, 原來我把 c++ 誤以為是 C++ 了..
10/05 22:03, 7F

10/06 00:50, , 8F
所以變數真的要好好取XD
10/06 00:50, 8F
抱歉那在問一下 *b[5] (*c)[5]差別在哪 ※ 編輯: showyoulovex 來自: 36.239.221.162 (10/06 02:13)

10/06 03:32, , 9F
b 是大小為5的陣列, 每個元素是 char*
10/06 03:32, 9F

10/06 03:33, , 10F
c是一個指標, 可以指大小為5的char陣列
10/06 03:33, 10F

10/16 23:38, , 11F
要記住 *這個符號是修飾前面 所以你要
10/16 23:38, 11F

10/16 23:38, , 12F
修飾後面要括號
10/16 23:38, 12F
文章代碼(AID): #1IK0lulG (Programming)