指標、指標變數、解除參照

2020-10-28 16:01:01

指標是什麼

指標就是地址
我們都知道計算機的記憶體。計算機中所有程式的執行都是在記憶體中進行的。所以為了有效的使用記憶體,就把記憶體劃分成一個個小的記憶體單元,為了更好的存取記憶體單元,就給記憶體單元進行了編號,這裡 「編號」 就稱為 地址

指標變數

  • 有變數就會有空間、變數名、變數內容,那麼變數的地址如何儲存我們就需要指標變數,指標變數也是普通變數,但是它裡面存放的內容時變數的地址。

指標的變數及其初始化

1、&a: 取地址符(單目運運算元):在此時,&的含義是去變數a的地址

scanf("%d",&a)

2、 int *p=&a;這是定義一個指標變數 這時候int *p定義了一個指向int型別指標p,

int main()
{
	int a = 10;
	int*p = &a;
	printf("%d\n", a);
	printf("%p\n", &a);
	printf("%p\n", p);
	system("pause");
	return 0;
}

執行結果為:

10
00D8FDCC
00D8FDCC

我們可看到&a表示的是a 的地址,指標變數p表示也是a的地址

3、*p :解除參照 :它所指的值是指標指向變數的值,並不是地址。

int main()
{
	int a = 10;
	int*p = &a;
	printf("%d\n", a);
	printf("%p\n", &a);
	printf("%p\n", p);
	printf("%d\n", *p);
	system("pause");
	return 0;
}

執行結果為:

10//------->對應的a的值
00EFFA74//-------->對應的是a的地址
00EFFA74//--------->對應的是a的地址
10//-------->對應的a變數的內容
  • 多次解除參照
int main()
{
	int a = 10;
	int*p = &a;
	int* q = p;
	
	printf("p = %p\n", p);
	printf("*p = %d\n", *p);
	printf("q = %p\n", q);
	printf("*q = %d\n", *q);
	system("pause");
	return 0;
}

執行結果

p = 008FFCA0
*p = 10
q = 008FFCA0
*q = 10
請按任意鍵繼續. . .

需要注意的是 int*p = a 中 p所指的是變數a的地址;*p 所指的是變數a的內容。