指標,也就是用來儲存位址的變數。scanf()函式就是使用位址作為引數。
一元運算子&可以取得變數的儲存位址。假設a是乙個變數,那麼&a就是該變數的位址,乙個變數的位址可以被看做是該變數在記憶體中的位置。
間接運算子 *
ptr=&bah
這時就可以使用間接運算子*來獲取bah中存放的數值
val=*ptr
這兩句放在一起等於下面
val=bah
指標宣告
int * p;標識乙個int型別的指標
我們可以通過如下來構建指標變數:
int * bah =& ptr;
我們可以這樣想,計算機儲存的時候需要兩個東西,第一,資料的位置標識,第二,就是真正的值。通俗一點的說法,用key和value的形式來解釋就是,bah的key是bah所對應的記憶體位址,而value則是ptr的對應位址。
#include
void mikado(int);
int main()
輸出如下
pooh位址為0028ff1c
p1=2686748,p1位址為0028ff18,p1指向位址0028ff1c
p2=2686748,p2位址為0028ff14,p2指向位址0028ff1c
1
可見,兩個指標==比較的時候是比較他們的value,也就是對應指向的pooh的位址,所以值為1,也就是true。
#include
void mikado(int);
int main()
void mikado(int bah)
結果如下
in main(), pooh=2
and &pooh= 0028ff1c
in main(), bah=5
and &bah= 0028ff18
in mikado(), pooh=10
and &pooh= 0028feec
in mikado(), bah=2
and &bah= 0028ff00
在main函式中,pooh和bah是不同的值,因此有不同的位址。
在mikado(pooh)的時候,只是進行了值傳遞,所以bah和main中的pooh也是不同的位址。
如果想將某個指標變數命名為ptr,可以使用如下語句
ptr=&pooh
ptr為一變數,pooh為一常量
這樣我們修改上面**就可以讓mikado中的bah指向main函式中的pooh
#include
void mikado(int
*bah);
int main()
void mikado(int
*bah)
輸出如下
in main(), pooh=2
and &pooh= 0028ff1c
in main(), bah=5
and &bah= 0028ff18
in mikado(), pooh=10
and &pooh= 0028feec
in mikado(), bah=2
and &bah= 0028ff1c
如果mikado改為如下
void mikado(int
*bah)
將有以下輸出
in main(), pooh=2
and &pooh= 0028ff1c
in main(), bah=5
and &bah= 0028ff18
in mikado(), pooh=10
and &pooh= 0028feec
in mikado(), bah=2686748
and &bah= 0028ff00
有人可能會對這個輸出有疑問,這是什麼鬼東西。這裡我們仔細想想,int *bah傳遞過來的是main函式中pooh的位址,這裡是0028ff1c,我們在printf(「in mikado(), bah=%d and &bah= %p \n」,bah,&bah);第乙個輸出的是%d,是其值,我們通過計算器,將十六進製制的0028ff1c轉成十進位制就是2686748,後面的輸出是2686748的位址為0028ff00
陣列名同時也是該陣列首元素的位址
int a[12];
a==&a[0]; //這個判斷是true
#include
#define size 10
int sump(int * start,int * end);
int main()
; long anwser;
anwser=sump(marbles,marbles+size);
printf("the total number of marbles is %ld.\n",anwser);
return0;}
int sump(int * start,int * end)
return total;
}
這裡結果就是上面陣列的和170 有趣的C語言預處理
分類解釋 在編譯器編譯之前,會首先搜尋預處理指令,按照指令完成編譯,預處理又分為 檔案包含 條件編譯 布局控制 雜注 和巨集替換。檔案包含 include 和 include 前者是和該c檔案相同目錄下的.h,如 include os cfg.h 或指明路徑的.h,如 include softwar...
c語言有趣的位運算
應用 1.判斷奇偶 2.見後面有趣應用 本身異或為0,與0異或為本身,滿足交換律。應用 不借助第三個數交換兩數,有趣應用4 cpp view plain copy void swap int a,int b 可以這樣理解 第一步 a b 即a a b 第二步 b a 即b b a b 由於 運算滿足...
有趣的C語言指標(一) 指標是個什麼東西?
大一的時候開始接觸了c語言,但是至今為止,一直有乙個糟糕的問題,困擾著我 c語言中的指標到底是啥?為什麼感覺很難的樣子?為什麼即使我寫了很多的c語言的 還是有可能會出現指標最基本的錯誤?不是說好的 指標就是位址的嗎 為什麼還有 指向int的指標 指向double的指標?首先 基本大部分的初學者拿到有...