指標 引用和鍊錶

2021-10-11 16:13:42 字數 1400 閱讀 4811

還是課堂的筆記。

記憶體中的乙個位元組為乙個儲存單元(byte);

儲存單元的編號是位址;

變數的位址是該變數所在儲存區域的第乙個位元組(單元)的位址;

位址成為變數的指標;

定義格式:

型別說明符 *指標變數名

int*pi;

float

*pf;

1、乙個指標變數只能指向統一資料型別的變數。(在定義指標變數時明確給定的)

2、如果指標變數為0,即null,表示空指標,不指向任何變數。(剛定義的時候沒有指向)

3、不要把位址值與整型變數搞混。

1、&取位址運算

返回變數記憶體位址;

int

*p,m;

m=200;p=

&m;//p是m的首位址。

2、*間接訪問運算

訪問指標指向的變數;

int

*p,m=

200,n;

p=&m;

//把m的首位址給p;

n=*p;

//將p指向的變數賦值給n;所以n==200;

*p=100;//將100賦給p所指向的值,故m==100;

&m——獲得變數m的位址;

*p——為指標變數p所指向的內容;

int

*p,m;

p=&m;

則,p與&m等價,*p與m等價。

1、指標變數要取到值才能間接訪問;

2、若有int m;int *p=&m;

是把m的位址賦給p,而不是賦給p指向的空間**(初始化)**;

3、相同型別資料變數的位址才能賦給該指標變數。

4、同型別指標變數可以相互賦值。

5、沒加 「*」是位址,加了是內容;

6、指標的位址是十六進製制;

7、函式有多個返回值的使用用引用和指標。

1、陣列名:

陣列元素在記憶體中連續存放,陣列名是該儲存區的起始位址,是位址常量

如:

int a[10]

;float b[10]

;

則a是a[0]的起始位址;

b是b[0]的起始位址。

1、指標±數值

如果p是指標,n是數值

p++(如果p是int、float,則p=p+4;char:p=p+1)

2、指標-指標

得到的結果是兩個位址之間的資料的個數;

3、比較,返回1或0;

多級指標和鍊錶

如果看到乙個宣告 type ptr 你會怎麼想?估計一半人都瘋了,如此宣告乙個變數的人本身要麼是乙個高手,要麼是乙個低能。這樣的一排 事實上表示的是乙個鍊錶,鍊錶上的每乙個元素可以分布在記憶體的任意乙個位置,它們之間每兩個通過乙個 相聯絡。p定義乙個指標,p指向乙個記憶體位置,該位置中儲存p宣告的資...

指標和引用,const 指標和const 引用

指標和引用是在使用中經常弄混淆的兩個概念。引用 reference 為物件起了另外乙個名字,用符號 表示。name,例如 int i 1024 int ref i 一般在初始化變數時,初始值會被拷貝到新建立的物件中,然而定義引用時,程式把引用和它的初始值繫結 bind 在一起,而不是將初始值拷貝給引...

指標和引用

一 先看一段 include using namespace std void freeptr1 int p1 void freeptr2 int p2 void main 思考 在 freeptr1 和freeptr2 的比較中,你能發現它們的不同點嗎?二 對 進行解釋 include using...