#include
using namespace std;
/*任何變數都需要指定資料型別,因為變數都要存在記憶體裡面,那就牽涉到怎麼存的問題,資料型別就規定了變數怎麼存。
所以變數的定義形式是:資料型別 變數名
對於指標變數,它的資料型別是固定的,因為指標變數裝的是乙個位址,如果是32位系統,乙個位址需要四個位元組裝,並且位址一定是無符號整形,所以指標變數本身的資料類
型是確定的,不需要專門指定,但是指標變數指向的內容的資料型別是多種多樣的。所以例如 int *p 修飾指標變數的int不是說p是int型別,p應該是unsigned int 型,
而是說p指向的內容是int型。
1、指標是個變數,它本身需要乙個位置存放,存放它的位置的位址的標號就是這個指標變數,這個變數裡面的內容是某個變數的位址。
2、變數修飾符的優先順序和結合方向:下面的例子中,結合順序都是以變數為核心從右到左邊,例如int *p; int* p;p都是首先和*結合,表明p是個指標變數。
3、指標的定義: 基本型別 *指標變數名; int *a;//基本型別是說a指向的記憶體空間所裝的資料是int型
4、常量指標:是個指標,即是個變數,但是該指標指向的內容是個常量;const int *i;從結合方向上去認識,i表明是個變數,*i表明i是指標變數,
int *i表明指標指向的內容是整形,const int *i表明i還是個常量。
5、指標常量:是乙個被const修飾的指標變數, 這個變數被放入唯讀區。
宣告指標常量的方法:先宣告乙個指標 int* p
int* const i;從結合方向上看,i表明是個變數,但是const i把這個變數限制成了乙個常量,然後這個常量又被int*修飾,進一步把這個常量變成了
不可變動的位址。
看一下指標常量是如何從產量演變過來的
定義乙個常變數: const int a = 11;
定義乙個指標變數常變數 const int *p
6、指標函式:返回值是指標的函式,任何函式都有返回值,這個值可以值普通變數也可以是指標變數。
int* fn(int);
7、函式指標:函式指標變數的簡稱
如果在程式中定義了乙個函式,編譯後,這個函式被作業系統分配了一段儲存空間,這段儲存空間的首位址就是這個函式的位址。而且函式名字表示的就是這個位址。
既然是位址,那麼我們就可以定義乙個指標變數來存放,這個指標變數就叫做函式的指標變數,簡稱函式指標。
函式指標和普通指標的定義不一樣,有他的特殊之處。
int fn;定義乙個普通的變數
int *fn;把上面的普通變數改寫成普通指標變數
int (*fn)(int) 把上面的普通指標變數改寫成函式指標變數
從優先順序和結合順序來看,由於有括號,所以首先要看(*fn),表明fn是個指標變數,然後看(*fn)(int) ,表明這個指標指向函式的首位址
*///1、指標是個變數,它本身需要乙個位置存放,存放它的位置的位址的標號就是這個指標變數,這個變數裡面的內容是某個變數的位址。
void main01()
void main()
void main7()
指標函式,指標常量,函式指標,常量指標
指標函式 指標函式是指函式的返回值型別是乙個指標型別,即本質是乙個函式。如 float find float pionter 4 int n 指標常量 指標常量是指標所指向的位置不能改變,即指標本身是乙個常量。如 int const p a 指標就是位址,也就是位址不能改變,如上 int const...
指標函式和函式指標,指標常量和常量指標
1 指標函式 指標函式是指帶指標的函式,本質上是乙個函式。函式的返回型別是某一型別的指標。定義格式 型別識別符號 函式名 參數列 例如 int fun x,y 2 函式指標 函式指標是指向函式的指標變數,本質上是乙個指標變數。定義格式 型別識別符號 函式名 參數列 3 指標常量 指標常量的本質是乙個...
常量指標 指標常量
int const p 表示p是乙個指向常量的指標,這種情況下,編譯器會講p所指向的物件當作常量處理,即便不是常量。所以無法改變其指向的物件的值,但是指標本身的值即其指向可以發生改變。int const p 表示指標是乙個常量,其本身值 即其指向 不可以修改,但是其指向的值 無論是常量還是變數 可以...