1.指針相關概念
地址:內存單元的編號
變量:內存空間的抽象
指針:C語言中的數據類型
指針變量:本質是變量,即對一塊內存空間
的抽象,該內存空間存放的數據是地址。
數據類型的作用是修飾變量,確定變量在內存中開辟多大的空間。比如int修飾的整型變量在內存中分配4byte空間,char修飾的字符類型在內存中分配1byte空間,指針修飾的變量在內存中分配4byte(32bit操作系統)。
2.指針舉例
定義一個整型變量并初始化:int a = 5;
定義一個指針變量指向a的地址:int * p = &a;
如圖所示:指針變量p存放的是整型變量a的地址,即p指向a的地址。
3.多級指針
根據上面對指針的介紹,我們現在考慮一個問題,能不能定義一個變量用來存放指針p的地址?
顯然是可以的,我們可以定義一個變量,這個變量的在內存中所占的空間大小只要是4byte就可以存放指針變量p的地址,那像這樣的變量,就是我們今天要和大家共同分享的指針的指針,這里所說的指針的指針,本質是一個變量,該變量存放的是一個地址值,同時該地址指向的內存空間中存放的又是一個地址,這實際上就是我們C語言中的多級指針。
4.二級指針的一般定義形式
<存儲類型> <數據類型> ** 二級指針變量名;
例如:
定義一個整型變量并初始化:int a = 5;
定義一個指針變量指向a的地址:int * p = &a;
定義一個二級指針指向p的地址:int **pp = &p;
訪問二級指針指向的一級指針指向的內存空間存放的數據,可以使用“**”方式;
如:**pp的值就是a的值。