C 指標與位址詳解

2021-07-26 16:33:45 字數 1610 閱讀 8722

1、「儲存器」的概念2、儲存器的使用

1)定義變數時,系統為變數分配相應的儲存單元,通過變數名可以直接使用該儲存單元。例如:

int x=5,y;

y=15; // y可以理解成該儲存單元的當前名字

2) 通過儲存單元的位址來使用該儲存單元,這就需要有表示儲存單元位址的量——指標型變數。例如:

int *ip; // ip是乙個指標(變數)

ip=&y; // ip是儲存空間y的位址

cout<< ip<< &y<< y<< *ip; //結果?

3、指標的定義

按變數的位址直接訪問變數的方法稱為「直接訪問」方式。存貯變數的記憶體空間的首位址稱為該變數的位址。如果將乙個變數的位址放在另乙個變數中,則存放位址的變數稱為指標(pointer)型變數。由於指標變數中的值是另乙個變數的位址,我們習慣上形象地稱為指標變數指向該變數。

訪問變數也可以間接地由指標變數取得該變數的位址進行,稱為「間接訪問」方式。指標變數中的值簡稱為指標,所以指標就是位址。

間接引用運算子* :作用於乙個指標型別的變數,訪問該指標所指向的變數。例如:

int a=5, *pointer;

pointer=&a; //pointer指向a

*pointer=10; //間接訪問,相當於a=10

4、指標定義的語法

指標型別變數定義語句格式如下:

《存貯型別》 型別 *變數名1《,*變數名2…》;

例如:int *lp1,*lp2; //定義整型指標變數lp1,lp2

float *fp1, fp2; //實型指標flp1,實型變數fp2

所謂指標型別,按指標指向的變數的型別區分。基本型別和派生型別都有對應的指標型別,包括類(class),甚至還有指標型別(指向指標的指標,二級指標)。

1、對指標賦值

對指標賦值有三種情況 :

指標相互賦值:使兩指標指向同一變數。(檢視動畫演示)

指標賦null:空指標,指標懸空。不同於指標未賦值。

注意:不能給指標變數隨意賦乙個位址值,只能取乙個已經分配了記憶體的變數的位址賦給指標變數。變數或物件的記憶體位址是由編譯系統來分配的。

【例5.6】指標賦值例項:

#include

void main()

{int age1=18, age2=20, *p_age;

p_age=&age1;

cout<<"age of wang ping is"<<*p_age<◆2、指標變數初始化

例如: int age , *p_age=&age; //p_age初始化為指向整型量age。

任何型別指標都可以賦以0值(null),稱空指標,表示該指標不指向該型別的任何乙個變數(物件)。注意不是指向位址為0的記憶體空間。

常量是不可定址的,但常變數是可定址的,如:

p_age=&20; //錯誤

const float pi=3.14159;

float *pointer=π //正確

3、指標使用時注意

C 指標與位址詳解 0

1 儲存器 的概念 2 儲存器的使用 1 定義變數時,系統為變數分配相應的儲存單元,通過變數名可以直接使用該儲存單元。例如 int x 5,y y 15 y可以理解成該儲存單元的當前名字 2 通過儲存單元的位址來使用該儲存單元,這就需要有表示儲存單元位址的量 指標型變數。例如 int ip ip是乙...

C 指標與位址詳解 0

1 儲存器 的概念 2 儲存器的使用 1 定義變數時,系統為變數分配相應的儲存單元,通過變數名可以直接使用該儲存單元。例如 int x 5,y y 15 y可以理解成該儲存單元的當前名字 2 通過儲存單元的位址來使用該儲存單元,這就需要有表示儲存單元位址的量 指標型變數。例如 int ip ip是乙...

C 指標與位址

指標是一種儲存變數位址的變數,存放在一組連續的儲存單元中 通常是2或4個,後者居多 因為c語言本身的feature就很少,加上指標又非常的高效,指標已然成了c最大的特點。與指標相關的操作符有兩個,分別為 解引用 和 取位址 解引用這個詞比較令人費解,比方存在指標p,p c p中便儲存了 c 的位址,...