指標是乙個變數,其值為另乙個變數的位址。指標的值的實際資料型別是乙個代表記憶體位址的長的十六進製制數。即,記憶體位置的直接位址。就像其他變數或常量一樣,您必須在使用指標儲存其他變數位址之前,對其進行宣告。
int *ip;
/* 乙個整型的指標 */
double *dp;
/* 乙個 double 型的指標 */
float *fp;
/* 乙個浮點型的指標 */
char *ch;
/* 乙個字元型的指標 */
定義乙個指標變數
把變數位址賦值給指標
訪問指標變數中可用位址的值
通過使用一元運算子 * 來返回位於運算元所指定位址的變數的值
#include
int main()
執行結果:
address of
var variable: bffd8b3c
address stored in ip variable: bffd8b3c
value of
*ip variable:
20
null 指標是乙個定義在標準庫中的值為零的常量。null 指標的位址是 0x0
空指標,如果沒有確切的位址可以賦值,為指標變數賦乙個 null 值是乙個良好的程式設計習慣。
檢查指標是否為空使用if語句
if
(ip)
/* 如果 p 非空,則完成 */if(
!ip)
/* 如果 p 為空,則完成 */
指標可執行四種算術運算:++、–、+、-。
假設 ip 是乙個指向位址 1000 的整型指標,是乙個 32 位的整數,讓我們對該指標執行下列的算術運算:ip++
執行完上述的運算之後,ip 將指向位置 1004,指標每增加一次都指向下乙個整數字置,計當前位置往後移動4個位元組。
++運算會在不影響記憶體為止是的實際情況下移動指標到下乙個記憶體位置,如果ip指標指向乙個位址為1000的字元運算:ip++,會導致指標指向位置1001,因為下乙個字元位置為1001
#include
const int max=3
;int main()
; int i,
*ptr;
/* 指標中的陣列位址 */
ptr =
var;
for( i =
0; i <
max; i++
)return0;
}
執行結果為:[0
]= bf882b30
儲存值:var[0
]=10var[1
]= bf882b34
儲存值: var[1
]=100var[2
]= bf882b38
儲存值:var[2
]=200同理,指標的遞減運算
#include
const int max=3
;int main()
; int i,
*ptr;
/* 指標中最後乙個元素的位址 */
ptr =
&var
[max-1
];for( i =
max; i >
0; i--
)return0;
}
執行結果:[2
]=518a0ae4
儲存值:var[2
]=200[1]
=518a0ae0
儲存值:var[1
]=100[0]
=518a0adc
儲存值:var[0
]=10指標陣列:可以定義用來儲存指標的陣列。
指向指標的指標:c 允許指向指標的指標。
傳遞指標給函式: 通過引用或位址傳遞引數,使傳遞的引數在呼叫函式中被改變。
從函式返回指標:c 允許函式返回指標到區域性變數、靜態變數和動態記憶體分配。
C語言指標
指標變數是包含記憶體位址的變數,它指向記憶體中的一塊區域,通過指標的值,可以間接訪問到相應的記憶體單元的資料,並做相應的修改。1 指標的定義和簡單使用 定義乙個指標變數和定義一般的變數類似,只需在變數名前面加乙個 對乙個指標變數賦值可以用取位址符 來獲取到乙個變數的位址,如果要獲得指標指向的記憶體區...
C語言指標
1 定義指標變數void change int n 格式 變數型別 變數名 定義了乙個指標變數p 指標變數只能儲存位址 指標變數p前面的int 指標變數p只能指向int型別的資料 int main void change int n 2 指標與陣列 陣列名其實質是乙個指標,但是它和普通的指標變數還是...
c語言指標
編寫程式,在主函式裡用指標陣列輸入六個字串,再用另乙個函式對這六個字串排序,並在主函式中輸出排好序的字串。include void sort char s,int n char temp for int i 0 ifor int j 0 jif strcmp s j s j 1 0 temp s j...