c语言 指针问题。。

[复制链接]
查看11 | 回复5 | 2013-4-6 16:03:26 | 显示全部楼层 |阅读模式
首先你要明白一点,形参是实参的影子,不在一个内存空间中所以子函数中改变了,调用它的地方是不会改变的虽然指针式可以改变数据的,但是指针的内容是没有改变的改变的只是指针指向的空间中的数据...
回复

使用道具 举报

千问 | 2013-4-6 16:03:26 | 显示全部楼层
C语言是按值传递的,你在子函数里交换了a,b的值,但是并没有影响主调函数里的a,b的值应该改为void swap(int **a,int **b){ int *temp = *a;*a = *b;*b = tmp;}传递参数的时候 要传递指针的指针 你试试吧...
回复

使用道具 举报

千问 | 2013-4-6 16:03:26 | 显示全部楼层
楼主,是这样。我第一次回答问题啊。指针就是存的地址。这点我想你大概已经知道了。 但是,你在传递函数里面没写好。比如 a是1,它的地址是100,指针ponit1里面存的地址是100,也就是说,对它应用,它指向的是a.同理,b是2,它的地址是200,指针point2里面存的地址是200,也就是说,对它应用,它指向的是b.现在 a小于b了,按照你的写法,是把poi...
回复

使用道具 举报

千问 | 2013-4-6 16:03:26 | 显示全部楼层
a和b都是指针拷贝,把它们换来换去,函数一退出,啥也没了。只有把它们指向的内容换了才行,所以“一定要带*的”说法很正确噢……...
回复

使用道具 举报

千问 | 2013-4-6 16:03:26 | 显示全部楼层
假设 int *是 elem类型。形参即为(elem a,elem b)这就是典型的值传递了应该加上 &,就变成地址传递了即 (int * &a,int * &b)...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行