1. 程式人生 > >03 C 程式設計魅影-指標

03 C 程式設計魅影-指標

指標

一,記憶體指標

概述:
硬體上來描述,記憶體是物理裝置,功能上描述,記憶體是是一個儲存倉庫,程式在執行前都要被裝載到記憶體中,才能被中央處理器執行

要點:

1,記憶體是由按順序編號的一系列儲存單元組成的,在記憶體中每個儲存單元都有唯一的地址編號,通過地址可以方便的在記憶體單元中存取資訊。
2,記憶體地址是連續的,相鄰記憶體單元間的地址相差一,當定義變數時,系統根據變數的型別分配相應的一個或多個記憶體單元,而這個變數佔有的第一個記憶體單元的地址作為該變數的地址

二,取地址符

&,用於表示某個變數的地址
格式:

&變數名

三,指標與指標變數

C語言用指標型別表示表示指標,用指標變數儲存指標。指標變數也叫指標型別變數。
在這裡插入圖片描述

四,指標變數定義

格式:

型別符 *指標變數名

示例:

   int *p;

1,指標變數只能指向同類型的變數
2," * "是一個說明符,說明該變數是指標變數

五,指標變數初始化

1,特殊方式

指標懸空: int *p = NULL;

2,常用方式

方式一:

int a;
int *p = &a;

方式二:

int a;
int *p;
p =&a;

六,指標與陣列

1,指向一維陣列的指標變數
陣列是儲存在一片連續的記憶體區域中,當指標指向陣列時,對指標進行向前或者向後移動便可以訪問陣列中的元素。

2,陣列指標定義

格式:

int a[10];
int *p = &a[0];指向a陣列第0號元素

3,指標變數在陣列中的運算

約定:(適用於3-1與3-2)
陣列變數首地址2000
int a[10];
int *pa = &a[0];

3-1,自增、自減運算

pa++;	//2004

運算過程:2000 + 4 = 2004

3-2,加減一個整數

pa = pa + 2;	//2008

運算過程:2000 +2*4 = 2008

3-3,指標變數相減

約定:
q指向a[3]地址為20012
p指向a[1]地址為20000

q-p; //結果:3

運算過程:(20012-20000)/4 = 3
a[1]與a[3]相差3個數組元素