1、指針
a) int a;表示一個內存空間,這個空間用來存放一個整數(int);
b) int* a;表示一個內存空間,這個空間用來存放一個指針,這個指針指向一個存放整數的空間,即a)中提到的空間;
c) int** a;表示一個內存空間,這個空間用來存放一個指針,這個指針指向一個存放指針的空間,並且指向的這個空間中的指針,指向一個整數。也簡單的說,指向了一個b)中提到的空間;
d) int (*a)[10];表示一個內存空間,這個空間用來存放一個指針,這個指針指向一個長度爲10、類型爲int的數組;和int**
a的區別在於,++、+=1之後的結果不一樣,其他用法基本相同。
以上四種類型見上圖表示。
e) int (*a)(int);表示一個內存空間,這個空間用來存放一個指針,這個指針指向一個函數,這個函數有一個類型爲int的參數,並且函數的返回類型也是int。
最近看到有人問到這樣的問題"數組名能否自加問題",最後我經過驗證得出了個結論,不可以,假設有一個整形數組int a[4] 如果出現a++表達式,則是一種錯誤的表達式,但是可以是a+1,所以推出了一個想法就是地址不可以自加,但是可以通過加幾來完成,對數組中其他元素的遍歷,也就是說必須有個"+"號這樣纔可以實現對數組名也就是地址的運算,如果沒有加號則就是錯誤的.當給出一個指針時,int p;p=a;p++;這樣的運算就是正確的,指針是一種可移動的東西,因此可以進行自加,自加有和p+1是一樣的效果,所以由此推出: