[問題] 一個二維陣列指標問題

看板C_and_CPP (C/C++)作者 (無糖豆漿)時間7年前 (2018/06/03 00:02), 7年前編輯推噓3(303)
留言6則, 4人參與, 7年前最新討論串1/1
開發平台(Platform): (Ex: Win10, Linux, ...) Win10 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) Compile and Execute C++ Online (GNU GCC v7.1.1) 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 這是個人之前在計概題目看到的一個題目。 一個二維陣列以int a[2][2] = {{5,6},{7,8}}表示 然後分別想問cout出來的 (*a+1)[1]的值? *(a+1)[1]的值? 我用C++ online compiler跑出來的結果是 7 4196368 我想請問這其中運算子的邏輯,我不太清楚陣列的subscript[], 和pointer之間會怎麼運作,其中的優先順序讓我很頭痛。 我目前已知"() []"最優先運算, 再來是"*", 之後才是"+"(如果是加法運算的話), 還有我不確定這個"+"是"正負號"還是"加法", 是"正負號"的話,則"+"的優先順序會高於"*"(右結合)。 程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔) #include <iostream> using namespace std; int main() { int a[2][2] = {{5,6},{7,8}}; cout << (*a+1)[1] << endl; cout << *(a+1)[1]; return 0; } 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.176.94.131 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1527955363.A.1A9.html

06/03 00:12, 7年前 , 1F
直接括號刮好就沒問題了
06/03 00:12, 1F

06/03 00:31, 7年前 , 2F
不用記運算元優先,刮好刮滿就好了
06/03 00:31, 2F

06/03 03:04, 7年前 , 3F
順序大概記一下就好了,加號和正號前後文應該可以分出來
06/03 03:04, 3F

06/03 03:05, 7年前 , 4F
不確定就用括號八...
06/03 03:05, 4F
謝謝各位的回答 我後來經朋友指點找到 使用pointer轉換array的方式 (*(a+x))[y] a是陣列 x是第幾列(row) y是第行(column) 出來的答案等同a[x][y] ※ 編輯: ILoveSoyMilk (180.176.94.131), 06/03/2018 10:54:23

06/03 11:23, 7年前 , 5F
你宣告陣列,然後用指標存取,只怕隊友會搞不清楚
06/03 11:23, 5F

06/04 13:31, 7年前 , 6F
文章代碼(AID): #1R4h-Z6f (C_and_CPP)
文章代碼(AID): #1R4h-Z6f (C_and_CPP)