用gdb来理解:值传递/指针传递/引用传递

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来理解:值传递/指针传递/引用传递
https://www.cnblogs.com/zjutzz/p/6818799.html

总结:

void myfun(int a)    //传值,产生复制
void myfun(int& a)   //传引用,不产生复制
void myfun(int* a)   //传地址,产生复制,本质上是一种传值,这个值是地址
原文地址:https://www.cnblogs.com/stellar/p/8927107.html