當前位置:才華齋>計算機>C語言>

C語言的指標

C語言 閱讀(2.16W)

我們在使用c語言進行編寫程式的時候,就一定會使用上指標,指標的操作是編寫程式的一個點。

C語言的指標

這裡,小編就分享一下自己在使用c語言程式設計過程中,對於指標的理解:

系統為每一個記憶體單元分配一個地址值,C/C++把這個地址值稱為“指標”。如有int i=5;,存放變數i的記憶體單元的編號(地址)&i被稱為指標。

指標變數”則是存放前述“地址值”的變數,也可以表述為,“指標變數”是存放變數所佔記憶體空間“首地址”的變數(因為一個變數通常要佔用連續的多個位元組空間)。比如在int i=5;後有一句int *p=&i;,就把i的指標&i賦給了int *型指標變數p,也就是說p中存入著&i。所以說指標變數是存放指標的變數。

有一個事實值得注意,那就是有不少資料和教科書並沒有如上區分,而是認為“指標是指標變數的簡稱”,如對int *p=&i;的解釋是:宣告一個int *型指標p,並用變數i的地址初始化;而嚴格說應該是宣告一個int *型指標變數p才對。所以有時看書要根據上下文理解實質,而不能過於拘泥於文字表述。

  1:指標是一個地址,指向的是個型別:

我們知道,c語言中的型別有int,char,bool(這個不常用),一般我們使用int,char就可以滿足一般的型別需求的,如果對於變數的長度過大,就是用long ,float,double,關於各個型別使用的的長度問題,可以使用sizeof(int)或者sizeof(long)來檢視各個型別,在系統中的小。

而指標就是一個8個位元組(64系統)。

  2:指標指向的是地址,地址指向的是內容:

我們需要一個變數,來儲存地址,這個變數的值是地址,但是我們可以通過修改變數的.值,來不斷的改變地址,但是,我們如果需要改變該個地址的值的話,就需要,對地址的值進行修改,而不改變地址。

int a = 10;

int *p ;

p = &a;

*p =11;

a=?

這裡我們看到,p 是一個變數,我們使用p來儲存變數a的地址,這是,我們使用*p對於這個變數進行賦值,那麼a的值最後,是多少呢,結果是11,因為我們使用*p賦值,就相當於a=11,賦值效果一樣的。

  3:指標的指標,是面對於指標的變數:

我們說,指標的指標的時候,就有點不清楚了,到底怎麼區分指標和指標的指標呢。

char *p;

char **pr;

pr = &p;

我們這樣看就清楚了一點,char *(*pr); *pr是一個儲存的值為指標的變數,pr就是儲存上個變數地址的變數。整合起來就是,pr是一個儲存的值為指標的地址的變數。

這樣,我們就基本,對於指標有一個直接的瞭解了。