種一棵樹最好的時間是十年前,其次是現在。
如有錯誤請指出,謝謝~
一、指標變數
在說指標變數之前,先說一下位址這個東西。現在大多數計算機裡都是記憶體被劃分為位元組,然後每個位元組可以儲存8位資訊,比如01010101,每個位元組有唯一的位址。
有的變數佔據乙個或多個位元組記憶體空間,把第乙個位元組的位址看做這個變數的位址。
1.指標變數是儲存變數位址的變數。
2.指標變數宣告:
以前我們比如宣告乙個整形變數,int a; 現在說一下宣告指標變數,一般在宣告指標變數時我們使用p(它是point英文單詞首字母來的)乙個表示整形變數的指標 它這樣宣告 int *p;,也可以這樣說,指標p是乙個指向int型別物件的指標變數。對於int p;我們的理解為宣告了乙個整形變數,現在在這個整形變數前面加乙個*號,就表明宣告的p是乙個指標變數。
大家還記得在初學c語言時,遇到的scanf("%d",&a);這個語句嗎,想必對&這個東西特別眼熟吧!
1.取位址運算子 &
顧名思義,比如 &a,就是把變數a的位址取出來。
指標變數是乙個表示變數位址的變數,對於指標變數的初始化,我們使用取位址符號。
2.指標變數初始化
在使用指標p前必須對指標p進行初始化!
//方法一:
int i, *p;
p = &i;
//方法二:
int i;
int *p = &i;
//甚至也可以這樣:
int i,*p = &i;
3.間接定址運算子 *這個*(間接定址)運算子不要和int *p;時的*搞混!
當指標p變數指向了物件,就可以使用*p訪問到儲存到物件中的內容。
只有p指向i,*p就是i的別名。
例如:
int a = 3;
int *p = &a;
printf("%d",*p);
這個**輸出的就是 變數a的內容 3。
三、指標賦值
#includeint main()
結果如下
四、指標為引數
1.我們都知道,當給函式傳參時,實際引數的值是不會改變的,那麼比如我們想要在乙個函式中去改變乙個實際引數的值,那應該怎麼做?return它然後在主函式重新賦值?但是如果想要改變兩個呢、三個呢、四個呢?
比如寫乙個交換數值的函式,給了a = 10 ;b = 3;c = 9;要兩兩交換這三個變數的值交換完是a = 3;b = 9;c = 10;寫乙個這樣的函式我們如果簡單的傳入a b c三個引數,在函式內部交換之後,出了函式它們仍然還是原值.
#includeint swap(int a,int b,int c);
int main()
int swap(int a,int b,int c)
執行之後你會發現他的結果並沒有改變,怎麼辦?
用指標作為引數!因為指標可以指向這個變數所在的位址,可以使用*p的賦值來直接改變變數的值。
#includeint swap(int *a,int *b,int *c);
int main()
int swap(int *a,int *b,int *c)
去執行一下子試試吧~
2.這樣我們的指標就多了一種運用場景:函式只能有乙個返回值,而需要多個結果時,我們就可以用指標來帶出多個結果。
當然,當某種可能出錯的運算使用-1或者0當做返回值表示執行失敗,若沒有出錯,這時我們也可以用指標來傳出結果。
3.const一下試試?
const 定義的是變數,常變數。用 const 定義的變數的值不允許改變,可以說它定義的是唯讀變數。這也就意味著必須在定義的時候就給它賦初值。
我們可以用const保護引數
因為有的時候我們傳入指標引數而又不希望它被改變,所以就const一下它。(當變數需要大量儲存空間時,這時傳遞變數的值就會浪費時間和空間)
這些就是指標最基礎的東西啦,後面還指標與陣列,動態記憶體分配等等。
一起加油~!
C語言指標初見(一)
最近一直在學習c語言指標,一直想總結一下,終於騰出來時間了,如果有寫錯的地方希望大家多多指正!乙個變數的位址稱為該變數的 指標 如果有乙個變數專門用來存放另一變數的位址 即指標 則它稱為 指標變數 指標變數就是位址變數,用來存放位址,指標變數的值是位址 即指標 定義乙個整型變數int a 定義乙個指...
C語言 指標 數字 指標 指標
指標 數字 指標 1 指的是加乙個單元格,不同的指標型別需要調整,調整的權重為sizeof 去掉乙個 注意 arr i arr i eg double dp brr dp 乙個單元格是八個位元組 char cp crr cp 乙個單元格是乙個位元組 只有 指標 指標 有意義 1 先算出位元組數 2 ...
c語言指標 指標和指標變數
指標是c語言中乙個重要的概念,也是c語言的重要角色。可以說指標是c的精華所在,學習指標雖然不易,但是只要肯花上時間去反覆的理解和實踐,就一定可以很好的掌握它。一 指標是什麼 指標到底是什麼?我們先舉乙個例子。假設我們在火車站 附近開了一家賓館,這家賓館有三千多間屋子,為了方便管理,我們給每個房間都加...