指標變數定義格式:
變數型別* 變數名;
變數型別:將來可以儲存什麼型別的變數的位址
* : 僅僅是乙個象徵(標誌), 象徵著這是乙個指標變數
int* p;
p = &number;
指標的注意點:
1.不能把常量賦值給乙個指標變數
2.定義指標變數的時候,寫的什麼型別,將來指標變數就只能指向(儲存)什麼型別的變數(位址)
3.指標變數沒有初始化,不要間接訪問其儲存空間
4.指標變數也可以定義的時候初始化
5.多個指標變數可以指向同一塊儲存空間
指向指標的指標
如果要定義乙個指標儲存乙個變數的位址, 把變數的型別拷貝過來,然後加上一顆星
如果要定義個指標儲存另乙個指標的位址,把指標的型別和星拷貝過來,然後加上一顆星
int i = 10;
int *ip = &i;
int **ipp = &ip;
int ***ippp = &ipp;
指標要分型別的原因,
根據指標變數去取值的時候,指標變數並不知道要取多少個位元組的值,
所以通過定義指標變數的時候的變數型別告知指標變數訪問值的時候訪問多少個位元組
指標與陣列
1:指標可以用來定義變數
int *p = #
2:指標可以作為引數進行傳遞(傳遞的是位址)
void change(int *v1)
3:指標可以作為函式的返回值
返回只真的函式
陣列元素的訪問方式總結:
1.陣列名[下標];
2.指標變數名[下標];
3.*(指標變數名 + i);
int ages[3] = ;
陣列的位址就是所占用儲存空間中位元組位址最小的直接的位址
陣列首元素的位址就是陣列的位址
陣列名就是陣列的位址
int *ap;
ap = &ages[0];
&ages[0] == ages == ap
注意: 指標是可以進行加法運算的, 但是和普通變數的加法運輸不一樣
指標變數加
1是加指標變數型別所占用儲存空間的位元組數
不要返回陣列儲存的字串給函式呼叫者
,因為當函式執行完畢
,陣列就釋放了
指標與字串:
用指標來接收乙個字串,這個字串是乙個字串常量
char *name = "jyk";
定義字串的兩種方式:
1.利用陣列
char name = "jyk";
特點:字串中的內容是可以修改的
使用場合:字串的內容需要經常修改的時候用陣列
2.利用指標
char *name = "jyk";
特點:字串中的內容是不可以修改的
使用場合:字串中的內容不需要修改,或者字串需要經常使用(效能比較高)
指標的總結
從指標的基本概念可以理解,在計算機中,資料是儲存在計算機的儲存單元中,每個儲存單元都有乙個編號,指標就是對應著儲存單元的編號,根據指標就可以找到資料儲存的位址。指標的型別是指標本身所具有的型別,一般去掉指標變數名,就是指標的型別。int p 指標的型別是int char p 指標的型別是char i...
c c 之指標的指標總結
指標變數p的值是001bfd18,而 號的作用是取值,p即取位址001bfd18中存放的值 其實p中存放的是位址,只是當cout時,如果指標是字元型指標,那麼會輸出p中位址指向的記憶體中的內容 這裡是h 直到遇到 0 才結束。所以直接輸出p時會輸出hello,而將p強制轉換為void 時輸出的是位址...
指標的運算總結
一 算術運算 1 指標與證書的加減運算 px n,px n 指標作為位址量加上或減去乙個整數n,其意義是指標當前指向位置的前方或後方第n個資料的位置。由於指標可以指向不同資料型別,即資料長度不同的資料,所以這種運算的結果取決於指標指向的資料型別。p n的實際操作是 p n sizeof 資料型別 p...