c 傳遞指標 指標的指標 指標的引用的區別

2021-08-10 16:05:27 字數 1060 閱讀 1223

在打平衡二叉樹時,看別人**用到了指標的引用,因為之前沒有用過我以為是他多此一舉,但是並不是.

首先是函式傳遞指標

#include

using

namespace

std;

int a = 1;

void test(int *p)

int main()

執行結果:

在正常情況下我們想要的結果是2 1

但是輸出卻是2 2;

因為指標p傳遞到test函式時接受的是指標,

改變的是形參,而實參main中指標p沒有發生變化.

傳遞指標的指標

#include

using

namespace

std;

int a = 1;

void test(int **p)

int main()

執行結果:

這樣結果就對了.但是兩次解析讓人頭暈.

#include

using

namespace

std;

int a = 1;

void test(int *&p)//對main中*p的引用

int main()

執行結果: 2 1想起來c++ primer書上剛講引用的例子

string a="i''m a good boy"

for(auto s:a)

toupper(s);

cout執行環境vs2017

關於指標傳遞和指標的引用傳遞

指標傳遞的實質 指標傳遞引數本質上是值傳遞的方式,它所傳遞的是乙個位址值。值傳遞過程中,被調函式的形式引數作為被調函式的區域性變數處理,即在棧中開闢了記憶體空間以存放由主調函式放進來的實參的值,從而成為了實參的乙個副本。引用傳遞的實質 在引用傳遞過程中,被調函式的形式引數雖然也作為區域性變數在棧中開...

傳遞指標和傳遞指標的指標

總是不懂指標 看了乙個csdn的問題 豁然開朗 在寫乙個棧的東西,在銷毀的時候有點小問題 define position int define size t int define elemtype char define buttom 1 struct ststack typedef struct ...

c 指標的指標和指標的引用

當我們把乙個指標做為引數傳乙個方法時,其實是把指標的複本傳遞給了方法,也可以說傳遞指標是指標的值傳遞。如果我們在方法內部修改指標會出現問題,在方法裡做修改只是修改的指標的copy而不是指標本身,原來的指標還保留著原來 的值。我們用下邊的 說明一下問題 輸出的是兩個2 展示一下使用指標的指標做為引數 ...