//A structure to describe a matrix.
typedef struct matrix{
int x, y, size, original_size, *data;
};
//Function to index matrices.
int get(matrix m, int x, int y)
{
return m.data[m.original_size * (m.x + x) + m.y + y];
}
我試圖理解此C代碼中的m.original_size *(m.x + x)+ m.y + y行。我需要在這一行上詳細說明,m.data [m.original_size *(m.x + x)+ m.y + y]。如何理解指向具有語法的數組的指針
我的嘗試:數據是一個指針,它指向數組m.data的地址。但後來我試圖理解聲明的其餘部分,我感到困惑。特別是*(m.x + x)+ m.y + y。
你不明白你不明白。 '[]'中的所有內容都是用於計算數組索引的基本整數算術。那麼你是說你不懂整數運算?或者你不明白爲什麼**代碼是這樣做的。如果是後者,我們無法幫助您只顯示所顯示的代碼。因爲答案取決於數據是如何分配和用於程序的其餘部分的。 – kaylum
這是一個使用一維數組實現的二維數組。表達式'*(mx。+ x)'計算行的位置,而'm.y + y'計算該行的列。如果它是一個二維數組,那麼它就像'm.data [m.x + x] [m.y + y]'。 – alvits
@alvits數組和指針是不一樣的。你可以使用相同的語法來訪問每一個,但它們是不同的 –