函数的指针传递问题

bigchui 2017-10-14 06:48:48
void fac(int *p)
{
p=p+1;
}

当调用这个函数时,即fac(head);
指针head是不是没有发生变化?
...全文
136 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 2017-10-16
  • 打赏
  • 举报
回复
是的,你参数是按值传递的,也就是说函数中的形参只是实参的一个复制品,函数中只是修改了一个复制品,并不影响原件
自信男孩 2017-10-16
  • 打赏
  • 举报
回复
没有变化,因为p是函数fac上的局部变量,p = p+1;只是修改了fac函数上的局部变量,而没有修改调用函数里的head; head是调用函数的里的变量(或者全局变量)
csdnwjj 2017-10-16
  • 打赏
  • 举报
回复
[b]没有变呢,举个例子,p=&f , 就是把变量 f 的地址给p,*p里为f的值
赵4老师 2017-10-15
  • 打赏
  • 举报
回复
http://edu.csdn.net/course/detail/2344 C语言指针与汇编内存地址-一.代码要素
陪妳看星星 2017-10-15
  • 打赏
  • 举报
回复
p是局部变量,只会影响到本函数fac栈内的内存。 但*p就不是局部变量了,它和*head一样,都指向head所指的内存,该内存并不在函数fac的栈内。 所以head和*head都没有变化,但在函数fac栈内p有变化。
大米粥哥哥 2017-10-14
  • 打赏
  • 举报
回复
是啊 关于值传递和引用传递

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧