深入了解陣列與指標

2021-08-22 02:19:33 字數 2003 閱讀 9137

指標

指標變數用於存放指向型別資料的位址,我們可以通過指標運算「*」解引用,引用指標變數所指向的資料。

例如,對指標變數p1,p2,p3,假定已有值,*p1,*p2,*p3代表指標變數p1,p2,p3所指向的資料,稱為指標變數所指向的變數,簡稱指標指向變數。如果指標變數p1,p2,p3分別存放整型變數i,j,k的位址,則p1指向i,p2指向j,p3指向k。

陣列

陣列用來儲存資料,定義乙個陣列arr[10],arr是這個陣列的陣列名,&arr表示整個陣列的位址,sizeof(arr)表示整個陣列的大小,其餘所有情況下arr都只代表陣列首元素的位址。

陣列與指標的區別指標陣列是陣列,是乙個存放指標的陣列

int *arr1[10];//存放整型指標的陣列

char* arr2[4];//存放字元指標的陣列

指標陣列中存放的指標還可以是二級指標,**指標等,例如:

char **arr3[3][5];//陣列中每乙個元素都是二級指標
陣列指標是指標,用來存放陣列位址

//乙個簡單的指標陣列的定義

int (*p)[10];

//解釋:p先和*結合,說明p是乙個指標變數,然後指標指向的是乙個大小為10個整型的陣列所以p是乙個指標,指向乙個陣列,叫陣列指標。

//注意:的優先順序高於*,所以必須加上()來保證p先和*結合。

陣列引數,指標引數

陣列傳參傳陣列首元素位址,一維陣列傳參傳的是陣列首元素位址,二維陣列傳的即第一行的位址

一級指標傳參

#include 

void print(int

*p, int sz)

}int main()

; int

*p = arr;

int sz = sizeof(arr)/sizeof(arr[0]);

print(p, sz);

return

0;}

二級指標傳參

#include 

void test(int

** ptr)

int main()

當乙個函式的引數部分為一級指標的時候,函式能接受的引數有:整型變數的位址

整型指標變數本身

整型陣列

當乙個函式的引數部分為二級指標的時候,函式能接受的引數有:

二級指標變數本身

一級指標變數的位址

char*的陣列

函式指標是指標,用來存放函式的位址

把函式的位址存到乙個陣列中,這個陣列叫做函式指標陣列

int (*parr[10])();//定義乙個函式指標陣列

//parr先和結合,說明parr是乙個陣列,陣列的元素是int(*)()型別的指標

函式指標陣列的用途:轉移表指向函式陣列的指標是乙個指標,指標指向乙個陣列,陣列的元素都是函式指標

深入了解C語言指標

目錄 注 指標的大小在32位平台是4個位元組,在64位平台是8個位元組。通過前面的知識我們知道,變數有不同的型別,如 整形,浮點型等。同理 指標也有不同的型別。指標的定義方式 變數型別 比如 int 程式設計客棧 pi null char pc null short ps null long pl ...

深入了解A

一 前言 在這裡我將對a 演算法的實際應用進行一定的 並且舉乙個有關a 演算法在最短路徑搜尋的例子。值得注意的是這裡並不對a 的基本的概念作介紹,如果你還對a 演算法不清楚的話,請看姊妹篇 初識a 演算法 這裡所舉的例子是參考amit主頁中的乙個源程式,使用這個源程式時,應該遵守一定的公約。二 a ...

深入了解A

一 前言 在這裡我將對a 演算法的實際應用進行一定的 並且舉乙個有關a 演算法在最短路徑搜尋的例子。值得注意的是這裡並不對a 的基本的概念作介紹,如果你還對a 演算法不清楚的話,請看姊妹篇 初識a 演算法 這裡所舉的例子是參考amit主頁中的乙個源程式,使用這個源程式時,應該遵守一定的公約。二 a ...