種了幾個小時的樹,竟然發現自己對指標引用卻一竅不通,黯然神傷啊...
遇到的情況
一開始初始化乙個root節點賦為null,然後是建樹,當以先序遍歷整棵樹輸出節點值時,發現樹總是空的。開始以為記憶體沒有分配出來,直接調了幾小時,才發現是自己不懂得指標引用!這麼基礎都不懂啊,怎能不叫人心驚膽戰……
查漏補缺
很清楚,在傳值呼叫中,改變形參不會影響實參(形參是實參拷貝),如果形參是單指標,可以實實在在地影響實參的值(形參和實參指向同一塊堆區)。
雖然單指標形參可以改變堆的值,但是有一樣東西是改變不了的——指標的指向
。
#include using namespace std;
void test(int *p)
int main()
我原本以為這樣會輸出200,但是我錯了,程式執行後直接崩潰!雖然在外函式的函式體裡面給p指標分配了堆區並賦了值,但是回到主函式之後,p依然是null!!!
而在把test函式的宣告部分改為:
void test(int *&p);
執行結果就列印出了200。
小結:
如果使用單純的指標,形參不能改變實參的指向。
但如果是指標的引用就不同了,改變了形參的指向,實參的指向也會隨之改變。
懂了這個語法再去種樹,樹理所當然就可以生成了。
C 中的指標 引用 指標引用
在c 指標的用處很大,可以快讀的訪問位址空間,而且本身不佔太大記憶體。指標操作在引數傳遞的時候非常方便。既可以作為傳入引數,又可以作為返回值。但是可不可作為函式的傳出引數呢?下面通過乙個例子來說明。教室裡面包含多個老師,每個老師管理多個學生 學生類 pragma once include class...
指標引用和引用指標的區別
c 在傳參的過程中,指標 和指標引用 是有區別的。雖然,我們往往可以通過傳指標然後通過間址訪問來修改指標所指向物件的值,同樣,通過引用也可以直接修改物件的值。但是,當傳指標的時候有乙個問題,就是,我們雖然可以通過指標來修改指標所指向物件的值,但是我們沒有不能直接修改指標的內容 也就是指標變數存放的位...
指標的引用
include void swap const int p1,const int p2 int 之前加const會導致swap函式錯誤,const不能修飾引用,引用不是常量 void swap int p1,int p2 此處函式的形參p1,p2都是引用 int main list const 修飾...