為什麼這篇指標陣列題目鄉民發文收入到精華區:因為在指標陣列題目這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者ILoveSoyMilk (無糖豆漿)看板C_and_CPP標題[問題] 一個二維陣列指標問題時...
開發平台(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
謝謝各位的回答
我後來經朋友指點找到
使用pointer轉換array的方式
(*(a+x))[y]
a是陣列
x是第幾列(row)
y是第行(column)
出來的答案等同a[x][y]
※ 編輯: ILoveSoyMilk (180.176.94.131), 06/03/2018 10:54:23