**自:
int p;
p是乙個普通的整型變數。
int *p;
1、p與*結合,說明p是乙個指標。
2、*p與int結合,說明指標所指向的內容的型別是整型的。
所以p是乙個返回整型資料的指標。
int p[5];
1、p與結合,說明p是乙個陣列。
2、p[5]與int結合,說明陣列裡的元素是整型的。
所以p是乙個由整型資料組成的陣列。
int *p[5];
1、p與結合(因為其優先順序比*高),說明p是乙個陣列。
2、p[5]與*結合,說明陣列裡的元素是指標型別。
3、*p[5]與int結合, 說明指標所指向的內容的型別是整型的。
所以p是乙個由返回整型資料的指標所組成的陣列。
int (*p)[5];
1、p與*結合,說明p是乙個指標。
2、*p與結合,說明指標所指向的內容是乙個陣列。
3、(*p)[5]與int結合,說明陣列裡的元素是整型的。
所以p是乙個指向由整型資料組成的陣列的指標。
int **p;
1、p與*結合,說明p是乙個指標。
2、*p與*結合,說明指標所指向的元素是指標。
3、**p與int結合,說明指標所指向的內容的型別是整型的。
所以p是乙個指向整型指標的指標。
int p(int);
1、p與()結合,說明p是乙個函式。
2、p()與()裡的int結合,說明函式有乙個int型的引數。
3、p(int)與外面的int結合,說明函式的返回型別是整型。
所以p是乙個有乙個整型引數且返回型別為整型的函式。
int (*p)(int);
1、p與指標結合,說明p是乙個指標。
2、*p與()結合,說明指標指向的是乙個函式。
3、(*p)()與()裡的int結合,說明函式有乙個int型的引數。
4、(*p)(int)與最外層的int結合,說明函式的返回型別是整型。
所以p是乙個指向有乙個整型引數且返回型別為整型的函式的指標。
int *(*p(int))[5];
1、從p處開始,先與()結合,說明p是乙個函式.
2、p()與()裡的int結合,說明函式有乙個int型的引數。
3、p(int)與外面的*結合,說明函式返回的是乙個指標。
4、(*p(int))與結合,說明返回的指標指向的是乙個陣列。
5、(*p(int))[5]與*結合,說明陣列裡的元素是指標。
6、*(*p(int))[5]與int結合,說明指標所指向的內容的型別是整型的。
所以p是乙個引數為乙個整資料且返回乙個指向由整型指標變數組成的陣列的指標變數的函式。
C語言複雜指標理解
學習和使用c語言近十年了但對c語言的複雜指標依然有些迷糊索性花點時間分析一下,下面是一些心得,希望對讀者有所幫助 取the c programming language中的兩個例子以分析 char x char x 3 5 若直接讓我們說出這兩個x分別是什麼意思往往會有一些困難,這裡我們可以使用代入...
C語言指標型別
在c語言中,定義了乙個特殊的資料型別 指標型別。指標型別的變數是專門 用來儲存某個變數的記憶體位址。這樣,我們就可以從指標變數的值取得執行時確切的位址了。eg int a 4個位元組 2000 2001 2002 2003 int b 4個位元組 2004 2005 2006 2007 int a ...
C語言型別的分析
1 宣告中被括號括起來的那部分 2 字尾操作符 括號 表示這是乙個函式 而 表示這是乙個陣列 3 字首操作符 表示指向.的指標char const next 首先看next 注意它直接被括號括住,所以先把括號裡的東西作為乙個整體 得到next是乙個指向 的指標 然後考慮括號外面的東西,在星號和括號字...