swap(*p1,*p2)和swap(p1,p2)区别
答案:2 悬赏:0 手机版
解决时间 2021-03-08 17:46
- 提问者网友:我没有何以琛的痴心不悔
- 2021-03-07 21:10
注意 这里 *p1和p1都是实参
最佳答案
- 五星知识达人网友:廢物販賣機
- 2021-03-07 22:28
这是新手很容易犯的一个错误,考验对值传参和地址传参的理解程度。swap(p1,p2)中,p1和p2均是临时变量,传递的是实参的数值,交换是在函数内部进行,不会对函数外部的实参产生影响,因而并不能起到交换实参的作用。而swap(*p1,*p2)传递的则是实参的地址,函数操作是根据地址直接到相应的内存单元中操作,因此是直接对实参操作的,可以交换实参的位置。
全部回答
- 1楼网友:洒脱疯子
- 2021-03-07 22:37
你好,不能,你的temp指针没有分配内存。
改成这样。
void swap(int *p1, int *p2)
{
int temp;
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
调用方式。
int i = 1;
int j = 2;
swap(&i, &j);
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯