c語言指標(1)

2021-10-17 14:14:43 字數 1822 閱讀 9582

每乙個變數都有記憶體位置,每乙個記憶體位置都定義了可以用運算子&來訪問變數的位址。

//列印變數n的位址

#include int main()

//輸出結果

n變數的位址0x7ffeefbff728

program ended with exit code: 0

指標是位址,變數的位址,指標變數是存位址的變數,其值為記憶體位置的直接位址。就像其他變數或常量一樣,和其他變數一樣,在使用指標之前,對其進行宣告。指標變數宣告的一般形式,為

type *var-name;
type 是指標的基型別,必須是乙個有效的c的資料型別,var-name是指標變數的名稱。用來宣告指標變數的*與乘法中的星號是相同的,在這個語句中,星號是來說明這個變數是指標,以下是有效的指標型別。

int *p;//乙個整型指標

double *dp;//乙個double型指標

float *fp;//乙個浮點型指標

char *ch;//乙個字元型的指標

指標的大小與型別 無關。 只與當前使用的平台架構有關。   32位:4位元組。     64位: 8位元組。

int a = 10;

int *p = &a;            int* p;--- windows;    int *p ---linux       int * p ;(習慣不同 自己選擇)

int a, *p, *q, b;

*p = 250;            指標的 解引用。 間接引用。

如果做左值: 存資料到空間中。

如果做右值: 取出空間中的內容。

//修改解引用(間接引用),用變數的方法去讀

int main()

//修改變數,用解引用的方法去讀

int main()

int *p;

*p = 1000;

2)p變數有乙個值,但該值不是可訪問的記憶體區域。

int *p = 10;//0-255這一部分的記憶體是要確定留給作業系統使用的,但是1000的也不行,武斷的給乙個數值是不行的

*p = 2000;

【杜絕野指標】

//初始化指標

int m;

int *p;

p = &m;

int *p = null;     #define null ((void *)0)//巨集 0的指標型別,null就是個0,0號位址也不能用

*p 時 p所對應的儲存空間一定是乙個 無效的訪問區域。不會出現投機的寫對了乙個位址的現象。

經過一系列**後,可能會變成有效的,在使用這個指標之前,可以先判斷一下這個指標是不是還是空,

#include int main()

return 0;

}

可以接收任意一種變數位址。但是,在使用【必須】借助「強轉」具體化資料型別。強制轉換資料型別不會發生資料丟失,因為指標的大小都是一樣的。

char ch = 'r';

void *p;  // 萬能指標、泛型指標

p = &ch;

printf("%c\n", *(char *)p);

//如果不強制轉換會報錯

//更改後這樣就行了

int main()

,如下

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 為間接訪問符,也稱為解引用 ...