C語言的二維陣列和二級指標的理解

2021-07-17 02:38:24 字數 2048 閱讀 8335

1.陣列本質

int a[5] 一維陣列名代表陣列首元素的位址

int a[5] ===> a的型別為

int*

二維陣列名同樣代表陣列首元素的位址

int b[2][5]===>b的型別為

int(*)[5]

注:二維陣列名

char array[10][100] 

是乙個陣列指標,

char (*)[100]

2.二級指標的第一種記憶體模型:

/**

作用:練習二維陣列的第一種記憶體模型理解

**/#include"stdio.h"

#include "stdlib.h"

#include "string.h"

//輸出二維陣列的資料

void printarray(char **myarray, int num)

}//從大到小的排列

void sortarray(char **myarray, int num)

} }}int main();

printf("排序之前:\n");

printarray(arraydata, 5);

printf("排序之後:\n");

sortarray(arraydata, 5);

printarray(arraydata, 5);

system("pause");

return 0;

}

執行結果:

3.二級指標的第二種記憶體模型:

/**

作用:二維陣列的第二種理解

**/#include"stdio.h"

#include "stdlib.h"

#include "string.h"

//輸出函式

void printarray2(char arraydata[10][100],int num)

}//字串排序函式

void sortarray(char arraydata[10][100], int num)

} }}int main();

printf("排序之前----:\n");

printarray2(arraydata, 5);

sortarray(arraydata, 5);

printf("排序之後----:\n");

printarray2(arraydata, 5);

system("pause");

return 0;

}

執行結果:

4.二級指標的第三種記憶體模型:

/**

作用:二維陣列和二維指標的第三種理解

**/#include"stdio.h"

#include "stdlib.h"

#include "string.h"

void printarray3(char **arraydata,int num)

}int main()

for (int i = 0; i < num; i++)

//將資料打到快取中

sprintf(arraydata[i], "%d,%d,%d,%d", i + 5, i * 2, i * 3, i*i*i);

} //列印出資料

printf("二維陣列和二維指標的第三種用法:\n");

printarray3(arraydata, num);

system("pause");

return 0;

}

執行結果:

二維陣列和二級指標

前兩天寫個程式,傳引數的時候想傳個二維陣列進去,結果悲劇了,函式寫成fun int p 原來沒有這麼寫過,以為這麼寫也是對的,結果錯了,查了些資料,做個總結。fun int p 這裡面的int p 這裡的p不是二維陣列的指標,而是指向指標的指標,即二級指標。正確的二維陣列的指標應該是 int a 2...

C語言的二級指標與二維陣列

指標是c語言的一大特色,它就像一把雙刃劍 使用得當能夠給程式帶來極大的靈活性和高效性 反之,程式就會變得難以除錯,漏洞百出!眾所周知,指標實質就是位址!乙個變數的位址即稱為此變數的 指標 如果有這樣一種變數 它的儲存單元裡存放的是其它變數的位址!我們就稱之為 指標變數 請注意兩者之間的區別 兩個完全...

C 指標和陣列 二級指標和二維陣列

1 陣列名代表的是陣列首元素的位址,這是乙個常量。即陣列已經定義,它的含義便已經明確了,陣列就是乙個固定記憶體塊大小的別名 2 陣列首元素的位址和陣列的位址是不同的東西 3 陣列也是一種陣列型別,其型別由構成陣列的元素的型別和陣列的大小一起決定 現在對上面所提到的內容進行一下詳細的解釋 看乙個例子 ...