我們通常說的指標其實應該叫做指標變數,是一種用來 獲取 和 儲存 其他變數的位址的變數。其他變數可以是 :整形,字元型 ,指標型 型別,結構體型別。 簡而言之,指標給我們提供一種訪問位址的方式。也就是可以視為 :指標 就等價於 位址。
對於乙個新的名詞來說明白這個新東西的作用是十分重要的,我們可以用它簡化很多操作。那麼指標有什麼用呢?
1.因為通過指標訪問變數位址很容易,而變數的位址和計算機的記憶體空間是密切相關的,所以我們可以通過指標來管理程式記憶體的申請和釋放。這個在使用鍊錶的相關操作時會用到很多。
2.對於同乙個變數可以通過不同的指標去訪問同乙個變數。
3.對於更改運算元的值可以通過變數名和指標去修改。
4.鏈結的功能(資料結構中的靈魂之一另乙個靈魂是結構體)
因為在上面我們已經說了,指標的型別也有以上的這幾種,所以同型別的指標只能和同型別的變數相對應。
例如: char a,*p;
int b;
只能夠:p=&a;
不能:p=&b;
因為他們的型別是不匹配的,會報錯提示指標的型別和變數型別不匹配。所以把指標型別和變數型別弄成一致是重中之重,不可忽略。
1.改值:
#include
intmain()
讀者可以試一下:
例項執行結果:
1.指標之間要互異 也就是不能定義兩個相同的指標變數。(名稱相同)
2.當需要用到多個指標時,可以考慮採用陣列指標
3.對於指標的移動時是按照變數的位元組數移動。
比如:int a=;
int *p;
p=&a;
++p;
其中++p的移動也就是一次移動乙個int的位元組大小(4位元組)
也就是如果 p=000000000062fe04;(16進製制)
那麼++p之後的位址是 p=000000000062fe08
如果是:
char s=「1234567」;
char *q;
q=s; //這裡不用&s的原因是,字串中的字串的名字就代表這個字串的首位址 s等價於s[0]等價於q;
這裡如果用 q++;//++p 和 p++ 在單獨使用的時候沒有區別
那麼就是每加一次就移動乙個char型的大小(1個位元組);
也就是如果 q=000000000062fe04;(16進製制)
那麼++p之後的位址是 p=000000000062fe05
C語言之一維陣列
在工作中又遇到和陣列,指標有關的 了,我看的有點懵,但是我明白陣列和指標肯定是擁有完全不同的特徵的。先從陣列下手吧,好好回顧一下,查漏補缺。下面定義乙個陣列。int num 3 我們大多數時候都會使用到陣列名。但是你真的清楚陣列名是什麼型別嗎?首先,num 1 毫無疑問是int型別,那麼num是什麼...
c語言之指標陣列理解一
直接給出demo和記憶體圖進行分析 列印指標陣列 這裡為什麼要定義為二級指標 首先,陣列本身就是乙個一級指標,在加上定義的是指標陣列,也就是儲存的資料是指標,所以是二級指標 void printarrydata char arry,int cnt 對指標陣列進行排序 void sortarrydat...
C語言 之 指標初步理解
c語言之指標 指標是c語言的靈魂所在,也為程式設計師提供了一種訪問變數位址的方式。那啥是指標?指標就是變數的位址,說白了就是這個變數儲存在哪個位置,你可以通過指標檢視,所以學習指標記住一句話 指標就是位址。例如 int number int pointer a 這是一種把變數位址賦給指標的方法 第二...