#include<stdio.h> void Swap(int a,int *b) { int temp; temp = a; a = *b; *b = temp; } void main() { int a=1,b=2; int *p=&b; if(a<b)Swap(a,p); printf("%d,%d",a,b); }
1,1
1,1 注意a在另外一个函数交换后并没有通过&将值取回
2,1
1,1
1 1
这段代码中定义了一个函数Swap,该函数接受一个整型变量a和一个整型指针b作为参数,然后交换a和b指向的值。在main函数中,定义了整型变量a和b分别为1和2,还定义了一个指向b的指针p。如果a小于b,则调用Swap函数交换a和b的值,最后输出a和b的值。
这段代码存在一个问题,即Swap函数中的参数是按值传递的,所以函数内部对a和*b的操作不会影响到主函数中的变量
2,1
swap()没有return返回值,不改变a的值;指针改变了b的值。
2, 1
我有我的名字 回复 我有我的名字: a没传
useryang 回复 useryang: 1,1
2.1
swap()没有return返回值,不改变a的值;指针改变了b的值
函数中的a并未传回主函数,所以a的值还是等于1
1 ,1
新-用-户 回复 新-用-户: a不改变地址 p指针改变b的值
是不是因为void没返回a值所以输出a还是1
ZzwZzw 回复 good*: 是因为a是值传递 不改变其值
2,2
xie 回复 xie: a不改变地址 p指针改变b的值
1.1
小柏 回复 小柏: 1,1
看不懂答案有人解释一下吗
知弦 回复 qsanjin: a只改变了形参里的a,main函数中的a没有改变。而b是取b的地址,指针*p在函数中能改变b的地址。详细的去看一下指针的知识
qsanjin 回复 AntarcticanLu: 为什么呀有人能解释一下吗
1',1
值传递和地址传递
qsanjin 回复 csuer: 为什么呀能解释一下吗
用户登录可进行刷题及查看答案
登录后提交答案