指標 函式 二維陣列之間的聯絡

2022-01-16 20:35:08 字數 1239 閱讀 8491

1.傳遞陣列指標

1 #include 2

void output( int (*pa)[3], int n )//

這個函式只能輸出n行3列的二維陣列310

}11void

main()12,

15

16};

17 output(a,2

);18 }

2.傳遞「指標陣列」  先將二維陣列的行指標儲存到乙個指標陣列中,再將指標陣列傳遞到子函式中去

1 #include 2

void output( int *pa, int row,int col ) //

這個函式更通用,但呼叫前,要做好準備工作。310

}11void

main()12,

15

16};

17int

i;18

int *pa[2

];19

for( i=0;i<2;i++)

20 pa[i]=a[i];

21 output(pa, 2, 3

);22 }

對於二維陣列作為變數存在於函式中,有如下情況:

void func(int array[3][10]); 

void func(int array[10]);

void func(int(*array)[10]);

p + i*n + j; 

void func(int array[3][10]);

void func(int array[10]);

變為:

void func(int **array, int m, int n);

在轉變後的函式中,array[i][j]這樣的式子是不對的(不信,大家可以試一下),因為編譯器不能正確的為它定址,

所以我們需要模仿編譯器的行為把array[i][j]這樣的式子手工轉變為:

*((int*)array + n*i + j);

在呼叫這樣的函式的時候,需要注意一下,如下面的例子:

int a[3][3] =

, ,

}; func(a, 3, 3);

根據不同編譯器不同的設定,可能出現warning 或者error,可以進行強制轉換如下呼叫:

func((int**)a, 3, 3);

陣列指標,指標陣列,二維陣列之間的對比

首先解釋幾個概念 1.陣列指標,即指向陣列的指標。其本身是乙個指標變數,變數中儲存的值是乙個陣列的起始位址。int p 10 畫圖畫圖 這樣一種結構,變數中儲存的使陣列的開始位址。所以,我們就可以像下面這樣寫 int a 10 陣列名就表示陣列的首位址,所以可以直接賦值 int p 10 a for...

指標 陣列 函式之間的聯絡

指標陣列 定義 int p n 1.優先順序高,先與p結合成為乙個陣列,2.再由int 說明這是乙個整型指標陣列,3.它有n個指標型別的陣列元素。陣列指標 定義 int p n 1.優先順序高,首先說明p是乙個指標,2.指向乙個整型的一維陣列,3.執行p 1時,p要跨過n個整型資料的長度 總結 陣列...

二維陣列 二維陣列和指標

include using namespace std int main 如上面這段程式所示,通過取位址符 指標 p 獲得了變數 a 的位址,那麼解引用符 就可以從 p 中得到變數 a 的值。也就是說,p a和 p a是等價的。p 是變數 a 的位址,從 p 中就可以取出 a 的值。反之,能從 p ...