用gdb來理解 值傳遞 指標傳遞 引用傳遞

2022-07-17 05:12:14 字數 894 閱讀 2534

1. 常用的gdb命令

1)顯示** - list

list 顯示10行**

list 1 顯示1-10行,再鍵入list或者回車,顯示下面10行**

list 1,20 顯示1-20行

2)設定斷點 - break

break 15 在第15行設定斷點

break func 在函式func()入口設定斷點

info break 顯示斷點資訊

delete 1 刪除斷點

3)單步執行 - next/n

單步跟蹤 - step/s

s: 執行一行源程式**,如果此行**中有函式呼叫,則進入該函式;

n: 執行一行源程式**,此行**中的函式呼叫也一併執行。

繼續執行 - continue

4)列印變數值 - print

print a

5)檢視函式堆疊 - backtrace/bt

bt n 顯示棧頂n楨(frame)

bt -n 顯示棧底n楨(frame)

frame n 顯示第n幀的資訊

info args 檢視某函式棧框裡面引數名及值

info locals 檢視某函式棧框裡面區域性變數的值

退出函式 - finish

退出gdb - quit

2. 用gdb來理解:值傳遞/指標傳遞/引用傳遞

總結:

void myfun(int a)    //

傳值,產生複製

void myfun(int& a) //

傳引用,不產生複製

void myfun(int* a) //

傳位址,產生複製,本質上是一種傳值,這個值是位址

C 值傳遞 指標傳遞 引用傳遞 理解

最近寫了幾篇深層次討論陣列和指標的文章,其中提到了 c語言中,所有非陣列的形式引數傳遞均以值傳遞形式 而關於值傳遞,指標傳遞,引用傳遞這幾個方面還會存在誤區,所有我覺的有必要在這裡也說明一下 下文會通過例子詳細說明哦 值傳遞 形參是實參的拷貝,改變形參的值並不會影響外部實參的值。從被呼叫函式的角度來...

學習記錄(1) 引用傳遞 值傳遞 位址傳遞

同樣對於交換兩個數的值 1.引用傳遞 函式原型宣告 void swap int a,int b 函式定義 swap int a,int b int temp temp a a b b temp 函式呼叫 swap a,b 2.值傳遞 函式原型宣告 void swap int a,int b 函式定義...

值傳遞,引用傳遞,指標傳遞

最近一直被c 的值傳遞,引用傳遞,指標傳遞這些概念所困擾,一直沒有乙個能說清他們之間的關係通過乙個簡單的例項,或者說淺顯的說法,找了一些相關資料,和自已的個人感受,簡單介紹一下,希望高人指正 c 中傳遞引數的方式有三種 傳引數的值 稱為值傳遞,簡稱傳值 傳引數的位址 稱為位址傳遞,簡稱為傳址 和引用...