C 中的指標 引用以及函式呼叫中的問題

2022-05-03 04:09:07 字數 1008 閱讀 8061

函式傳參的方式有三種:

(1)值傳遞

(2)引用傳遞

(3)指標傳遞

值傳遞傳遞的是這個值的乙個拷貝,形參是實參的乙個拷貝,對形參的操作不影響實參的值;

指標傳遞傳遞的是那個指標的乙個拷貝,對這個拷貝的指標指向的那塊記憶體的操作會影響原始指標指向的那塊記憶體的值;

引用傳遞傳遞的是這個實參的乙個別名,傳遞的是這個實參本身

個人感覺指標傳遞相對於引用傳遞,它雖然需要傳遞了乙個指標的拷貝,可能會影響點儲存空間,但是相對於引用傳遞不需要傳遞整個實參本身,速度方面應該會快一點

還有其他的指標和引用的區別:

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

int a=1;int &b=a;

上面定義了乙個整形變數和乙個指標變數p,該指標變數指向a的儲存單元,即p的值是a儲存單元的位址。

而下面2句定義了乙個整形變數a和這個整形a的引用b,事實上a和b是同乙個東西,在記憶體占有同乙個儲存單元。

(2)可以有const指標,但是沒有const引用;

(3)指標可以有多級,但是引用只能是一級(int **p;合法 而 int &&a是不合法的)

(4)指標的值可以為空,但是引用的值不能為null,並且引用在定義的時候必須初始化

(5)指標的值在初始化後可以改變,即指向其它的儲存單元,而引用在進行初始化後就不會再改變了。

(6)"sizeof引用"得到的是所指向的變數(物件)的大小,而"sizeof指標"得到的是指標本身的大小;

(7)指標和引用的自增(++)運算意義不一樣;

C 引用,以及引用與指標的區別

在c 中不只是有取位址的意思,還有引用的意思。引用變數是乙個別名,也就是說,它是某個已存在變數的另乙個名字。一旦把引用初始化為某個變數,就可以使用該引用名稱或變數名稱來指向變數,其實可以把它想像成指標,但又區別於指標。引用示例 int r i double s d 引用很容易與指標混淆,它們之間有三...

C 中函式呼叫時的指標和引用

在函式呼叫時,用指標或者引用做引數,表示把變數的位址傳遞給子函式,但是子函式只能修改指標所指變數的值,並不能修改指標的指向。如果想用修改指標的指向,就要用指標的指標,或者指標的引用。大部分情況下,用指標和引用做引數,只是想要修改指標所指變數的值,並沒有想修改指標的指向。但是如果指標所指的這塊內存在呼...

C 中的指標 引用 指標引用

在c 指標的用處很大,可以快讀的訪問位址空間,而且本身不佔太大記憶體。指標操作在引數傳遞的時候非常方便。既可以作為傳入引數,又可以作為返回值。但是可不可作為函式的傳出引數呢?下面通過乙個例子來說明。教室裡面包含多個老師,每個老師管理多個學生 學生類 pragma once include class...