二維陣列的動態分配及引數傳遞

2021-06-05 05:19:17 字數 894 閱讀 9349

原文出自:

1. c語言動態分配二維陣列

(1)已知第二維

char (*a)[n];//指向陣列的指標

a = (char (*)[n])malloc(sizeof(char *) * m);

printf("%d\n", sizeof(a));//4,指標

printf("%d\n", sizeof(a[0]));//n,一維陣列

free(a);

(2)已知第一維

char* a[m];//指標的陣列

int i;

for(i=0; i多說一句:new和delete要注意配對使用,即有多少個new就有多少個delete,這樣才可以避免記憶體洩漏!

3.靜態二維陣列作為函式引數傳遞

如果採用上述幾種方法動態分配二維陣列,那麼將對應的資料型別作為函式引數就可以了。這裡討論靜態二維陣列作為函式引數傳遞,即按照以下的呼叫方式:

int a[2][3];

func(a);

c語言中將靜態二維陣列作為引數傳遞比較麻煩,一般需要指明第二維的長度,如果不給定第二維長度,則只能先將其作為一維指標傳遞,然後利用二維陣列的線性儲存特性,在函式體內轉化為對指定元素的訪問。

首先寫好測試**,以驗證引數傳遞的正確性:

(1)給定第二維長度

void func(int a[n])

(2)不給定第二維長度

void func(int* a)

注意:使用該函式時需要將二維陣列首位址強制轉換為一維指標,即func((int*)a);

二維陣列的動態分配及引數傳遞

1.c語言動態分配二維陣列 1 已知第二維 code 1 char a n 指向陣列的指標 a char n malloc sizeof char m printf d n sizeof a 4,指標 printf d n sizeof a 0 n,一維陣列 free a 2 已知第一維 code ...

二維陣列的動態分配及引數傳遞

1.c語言動態分配二維陣列 1 已知第二維 code 1 char a n 指向陣列的指標 a char n malloc sizeof char m printf d n sizeof a 4,指標 printf d n sizeof a 0 n,一維陣列 free a 2 已知第一維 code ...

二維陣列的動態分配及引數傳遞

1.c語言動態分配二維陣列 1 已知第二維 code 1 char a n 指向陣列的指標 a char n malloc sizeof char m printf d n sizeof a 4,指標 printf d n sizeof a 0 n,一維陣列 free a 2 已知第一維 code ...