C語言指標1

2021-09-19 18:32:41 字數 1539 閱讀 7059

計算機中所有的資料都必須放在記憶體中,不同型別的資料占用的位元組數不一樣,例如 int 占用4個位元組,char 占用1個位元組。為了正確地訪問這些資料,必須為每個位元組都編上號碼,就像門牌號、身份證號一樣,每個位元組的編號是唯一的,根據編號可以準確地找到某個位元組。

先看這樣一段**,定義乙個整型變數a和整型指標變數p,把a的位址賦給p,輸出a的位址,p,p的位址。

#include#includeint main()

輸出結果

例如:

int *p;

p = 100;

這樣的賦值是錯誤的,不能將乙個數直接賦給指標變數。

int *p;

int a;

p = &a;

指標是用來存放變數位址的,所以這樣的賦值是合法的。

所有的指標變數都是4個位元組

看這樣一段**:

#include#includestruct abc

;int main()

輸出結果:

&和*

#include#includeint main()

輸出結果:

a裡面存的是10,a有它對應的位址5240736,p裡面存的是a的位址,p也有它對應的位址。

看下面一段**

#include#includevoid swap1(int x, int y)

void swap2(int *x, int *y)

int main()

這段**中,swap1裡面交換了x,y的值,swap2裡面也交換了x,y的值,但最後只有swap2交換了a,b的值。

原因:在函式在呼叫時,形參才會被分配記憶體,當函式呼叫結束時,形參的生命週期也就完結,自動釋放,所以不會影響主函式a,b的值;在函式裡面x,y的值交換了,但是不會影響a,b。

而swap2把a,b的位址傳給形參,通過位址,找到a,b的值,對a,b進行了調換。

舉個例子解釋:教室的桌子上放著個紙條上面寫著(10,100),你人在家裡想要調換這兩個值,swap1就相當於你在家自己拿張紙條寫了個(100,10),然後扔掉,教室裡面的紙上面數字並沒有改變。swap2就相當於你在家拿紙條寫上了10和100的位址(位置),然後通過位址找到教室,把教室裡面的紙上面的數字進行改變,然後把寫有位址的那張丟掉,所以教室裡的紙上面數字進行了交換。

C語言 指標1

指標恐怕是c語言中最不容易掌握的乙個概念了,但指標又是如此的重要,可以說不會指標,c語言就等於沒學。指標到底是乙個什麼東西呢?include int main char pch null char pstr hello pointer short pshort null int pint null ...

C語言指標1

陣列與指標 陣列的名字是第一元素的位址。include int main printf str 0 的位址是 p n str 0 輸出 str 0 的位址是 000000000062fdc0陣列相鄰每一元素之間相差值 資料型別的寬度 include int main float b 3 double...

C語言指標1

1 取位址符 2 雙目運算子 例如a b 按位於 指標 位址 int p 定義整型指標變數 double p1 定義浮點型指標變數 int a 10 整型變數存放整型值 double b 23.3 浮點型變數存放浮點數 int p a 整型指標變數存放整型位址 指標 p 為間接訪問符,也稱為解引用 ...