传入函数中的指针地址发生了变化

SmartJia
  • 4
新手上路,请多包涵

定义了一个函数A接受char指针参数,在调用函数之前打印的指针地址是0x7fffbad86600

在调用的函数A里面打印出来的地址竟然变成了0xbad86600或者0xffffffffbad86600,有没有遇到过类似情况的

回复
阅读 4.5k
3 个回答

你倒是把代码贴出来啊

其实本质都是是by value传递。

指针传递只是copy指针指向的地址,指针本身不会保留。

值传递是传递copy后的值。例如如果需要利用指针参数在函数里面申请内存,需要使用二级指针,大概就是这个原因吧。

re_i_am
  • 1
新手上路,请多包涵

函数传递参数时,会做一份拷贝,只保留了传入参数的值,也就说容器变了,但是内容没有变。
指针地址的变化就是因为这个“容器”变了,但是指针所指向的那块的地址是没变的。
函数在调用完就会销毁那份拷贝。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏