C語言| 指針的優點-CSDN博客
* 表示“指向”,為了說明指針變量和它所指向的變量之間的聯系。
int * i;//表示指針變量i里面存放的地址,所指向的存儲單元里的【數據】。
【指針變量的定義】
C語言規定所有變量,在使用前必須先定義,指定其類型,并按此分配內存單元。
指針變量,是專門用來存放地址的,所以定義為“指針類型”。
[指針變量定義的一般形式]
基類型 * 指針變量名;
舉例:int *a;? ?float *b; //定義了指針變量a和b。
1) 看到 * ,要清楚它是指針類型,變量名為 * 后面的內容。
2) “基類型”,用來指定該指針變量,可以指向的變量的類型。
表示指針變量里面所存放的“變量的地址”,所指向的變量的類型。
3)int *a;?
i. 定義了一個指針變量a,只能存放int 型變量地址。
ii. 沒有初始化,表示此時指針變量a,沒有指向任何一個變量。
iii. 變量a的數據類型是[ int * ]型,是存放int變量地址的類型,int稱為基類型。
4) 不同類型的數據,在內存中所占的字節數是不同的。每個字節都有一個地址,指針變量指向的是第一個地址(首地址)。int 占4字節,有四個地址。通過所指向變量的首地址+該變量類型,就能直到該變量的所有信息。
5) 指針變量==變量,指針變量本身就是有地址的。
[指針變量本身的地址]:系統為指針變量分配的地址。
[指針變量的內容]:指針變量里面存放的另一個變量的地址。
6) 地址是可以進行運算的,后面會學指針的運算&移動。
i. 指針的移動
舉例:int *a;? 使指針向后移動1個位置==移動4字節,或者,使指針加1==地址加4.
指針變量的基類型,占幾字節,這個1就代表幾。
ii. 指針的運算
兩個指針變量相減的結果,是一個常量,是這兩個地址之間元素的個數,而不是地址的個數。
舉例:int * a;? //如果兩個指針變量相減,相差4個地址,就是1個int 元素,結果就是1。
【程序代碼】
#include <stdio.h>
int main(void)
{
?? ?int *a, *b;?
?? ?int JG; //存放兩個地址數相減的結果
?? ?int c = 10, d = 11;
?? ?a = &c;
?? ?b = &d;
?? ?JG = a-b;
?? ?printf(" a = %d\n b = %d\n JG = %d\n", a, b, JG);
?? ?return 0;
}