来个大神说一下c语言指针问题!
来个大神说一下c语言指针问题!其实也就是个小问题。。这两道题指针有何不一样?一个传值一个传指针什么的,详细点谢谢...
来个大神说一下c语言指针问题!其实也就是个小问题。。这两道题指针有何不一样?一个传值一个传指针什么的,详细点谢谢
展开
3个回答
展开全部
其实指针也是变量 你可以把 char * 合在一起看 和 char一样都是类型而已
关键区别指针里面放的值是 地址
而函数运行时使用的始终是自己的形参
那么这样看 第一题 是把变量 p,q的值传给个形参 x,y
之后函数将x,y的值作为地址把里面的数值进行了交换(也就是把p,q指向的地址值交换了)
第二题 同样是 是把变量 p,q的值传给个形参 x,y
区别是函数 直接将x,y的值进行了交换,而这个操作对实参p,q没有影响
关键区别指针里面放的值是 地址
而函数运行时使用的始终是自己的形参
那么这样看 第一题 是把变量 p,q的值传给个形参 x,y
之后函数将x,y的值作为地址把里面的数值进行了交换(也就是把p,q指向的地址值交换了)
第二题 同样是 是把变量 p,q的值传给个形参 x,y
区别是函数 直接将x,y的值进行了交换,而这个操作对实参p,q没有影响
追问
所以如果是字符串指针的话只交换首地址的值吗
追答
是的,字符串数组的地址是连续的,首地址就可以确认字符串
展开全部
第一题中的fun函数,两个参数为指向char型变量的指针,t是一个char型变量,*x,*y就是对应地址中的值,所以交换的是值。故输出为1bc a23
第二题中的fun函数,两个参数同样为指向char型变量的指针,t是一个char型变量的指针,x,y就是指针指向的地址,所以交换的是地址。故输出为two one
追问
第二题是地址交换值不换 one two 吧?
追答
地址中的值不变,但是地址交换了,所以输出顺序变了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以去stack overflow问问
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询