C 結構體指標做函式引數不會改變實參的值

2021-10-24 04:33:17 字數 910 閱讀 1731

參考

在做一道經典的深度優先搜尋二叉樹的題目時遇到乙個問題,即c++中將結構體指標作為引數傳遞時,並不會改變實參的值!原因是當結構體指標傳遞給函式時,會拷貝乙份指標的值,但是函式內部的指標和函式外部的指標並不是指向同乙個引用的,所以才會使得函式裡面改變了,但是函式外部無變化,解決方案是在傳參的時候,將結構體指標的引用傳遞過去

//結構體指標做引數不會改變形參的值!需要傳引用

//開始我傳的是treenode* res

bool

dfs(treenode* node,treenode* p,treenode* q,treenode*

& res)

//中序遍歷.需要先確定左右子樹中是否含p,q,再考慮根節點的情況

//深搜至樹的最底層,直至node==null返回false,從最深處葉子節點開始更新。則初始lson/rson為false

bool lson =

dfs(node-

>left,p,q,res)

;bool rson =

dfs(node-

>right,p,q,res)

;//滿足條件則記錄結果if(

(lson&&rson)||(

(node==p||node==q)

&&(lson||rson)))

//若當前遍歷到的節點是p或q,或者之前的遞迴過程已使lson/rson為真(即p或q已找到),返回true

return node==p||node==q||lson||rson;}}

;

結構體型別指標做函式引數(C

因為用到了這塊,所以轉了一篇文章。設有學生情況登記表如圖所示,用選擇排序法對該錶按從小到大進行排序。學生情況登記表 學號num 姓名name 8 性別 年齡age 成績score 101zhangm19 95.6 102zhaom20 89.0 103wangf18 96.5 104shanm20 ...

結構體做函式引數 c

作用 將結構體作為引數箱函式中傳遞 傳遞的方式 include includeusing namespace std 定義學生結構體 struct student 列印學生資訊的函式 1 值傳遞 void printstuinfo struct student s 位址傳遞,外側的資料也會發生變化 ...

用結構體變數和結構體變數的指標做引數函式

例題 有n個結構體變數,內含學生學號 姓名和3門課程的成績。要求輸出平均成績最高的學生的資訊 包括學號 姓名 3門課程成績和平均成績 實現 include define n 3 學生數為3 struct student 建立結構體型別 struct student stu n p stu 定義結構體...