受一些gdb的影响
两个函数中的变量有不同的作用域,所以int中的ab,和子函数中的ab就不一样了
没有关系,只是因为指向的地址不同. 后面能改是因为你直接指向了a变量的地址. 如果不通过地址进行修改的话.只是局部变量. 存在于另一个空间
一样的 就是工具不太一样而已 用了许多年的windows 改成linux 不习惯而已
你的是什么版本,我复制了你的代码之后可以显示出来。
change 函数的返回值是 void 啊
回答了,但是好像在审核
其实只要是比较新的Linux就可以了,不用太在意版本的
就是C啊,老师在linux下将的C,所以叫linux C
那不能用gdb调试了,只是生成.exe
可以用
编译的时候要加入-g选项,例如你要编译hello.c文件,就必须用gcc -g hello.c,这样的话输出的文件a.out才能用gdb进行debug。你可以试下,加入-g这个选项。
此时a=5还没执行,打印出的a是你之前赋的值,可能之前赋的值超出了数据类型的范围而去的补码
断点调试:选定某一行,然后选定调试工具栏最右边那个手掌符号(F9),然后选定它旁边那个带箭头的符号(F5).
s(step)执行一行源代码并且进入函数内部;
f(frame)切换调用的上下文,进入相应的栈里,使用该命令可以打印栈层编号,当前的函数名,函数参数值,函数所在的文件及行号,函数执行到的语句等等;
。。。。
你可以尝试编译一下
gcc -Wall main.c -o main.out
看看编译器会不会警告,有警告都是不太好的。