成也指標,敗也指標。對於c語言來說,指標是他的招牌,卻也是最令人望而生畏的。我會嘗試用很號理解的方式去闡述,希望你可以看的明白。
其實指標就是乙個普通的變數,只是他存放的是乙個位址,他占用的空間是固定的,在32位系統上是4個位元組,在64位的系統上是8個位元組。
#include
intmain();
char *name = "tom";
printf("num is %d\n", *num_point);
printf("names is %s\n", names[0]);
printf("names is %s\n", *names);
printf("name is %s\n", name);
}複製**
執行結果如下,其中的*
是乙個取值符號:
num is 10
names is alan
names is alan
name is tom
複製**
這裡解釋一下陣列指標和字串指標。其中,陣列指標是定義了乙個指向乙個陣列的指標,而且是指先陣列第乙個元素的。所以在上面的names[0]
和*names
結果是一樣的。我用int
指標來作為對比解釋:
我們在定義的時候可以分解為這樣:
int num = 10;
int *num_point;
num_point = #
複製**
char *names = ;
printf("names is %s\n", names[0]);
printf("names is %s\n", *names);
複製**
所以其中names
就是乙個位址,指向陣列的第乙個元素,通過取值符號*
得到的就是「alan」
type *ptr //type型別的指標,名為ptr。
複製**
*ptr //ptr所指向位置的值
複製**
*(ptr + i) //(ptr所指向位置加上i)的值,以位元組為單位的話,應該是ptr所指向的位置再加上sizeof(type) * i。
複製**
&thing //thing的位址。
複製**
type *ptr = &thing //名為ptr,type型別的指標,值設定為thing的位址。
複製**
ptr++ //自增ptr指向的位置。
複製**
零基礎搞懂C語言指標
c語言中把專門存放變數位址的變數 指標變數 簡稱指標。什麼這樣說你不明白?位址記憶體單元 變數100020x 10021y 1004 115z 2000 1000 p其中變數x的記憶體單元的位址為1000,而變數p的值是變數x的記憶體單元的位址所以稱p為指標變數簡稱指標。前邊我們已經學過 變數的定義...
零基礎學c語言教程
c語言通過自學軟體工程師要多久?許多同學問c語言怎麼學?考二級c的話c語言書籍的話推薦看譚浩強,但是你要用於工作上的話我推薦你看傳智播客的c語言教程!精通c語言肯定得花上幾個月時間。很多人對學習c語言感到無從下手,經常問我同乙個問題 究竟怎樣學習c語言?我是乙個教師,已經開發了很多年的程式,和很多剛...
零基礎學Python之前需要學c語言嗎
python本身是比較適合作為入門程式語言來學習的,一方面python的語法結構比較簡單清晰,實驗也相對比較容易完成,這會逐漸增強初學者的學習信心,另一方面python屬於全場brzdum景程式語言,未來在很多領域都能用得上。先學哪種語言好,我認為需要分不同的人來說。對於計算機專業的大學生來說,我覺...