函数,指针
程序为从大到小输出两个整数,下面是正确的程序#include <stdio.h>
int main()
{
int a, b;
int* p1, * p2;
int r(int* p1, int* p2);
scanf("%d,%d", &a, &b);
p1 = &a;
p2 = &b;
if (a < b)
{
r(p1, p2);
}
printf("%d>%d", *p1, *p2);
return 0;
}
int r(int* p1, int* p2)
{
int p; //疑问1:这里可以是int *p吗?
p = *p1; //疑问2:交换值的这三行可以是p=p1;p1=p2;p2=p吗?
*p1 = *p2;
*p2 = p;
}
也就是这个函数可以是这个吗?
int r(int* p1, int* p2)
{
int *p;
p = p1;
p1 = p2;
p2 = p;
} 我试过是不对的 本帖最后由 巴巴鲁 于 2020-7-20 18:07 编辑
你如果在r函数里定义成int *,是无法把值传过去的,因为这时是传值,形参无法传给实参
传地址是可以传过去的
你要是不使用函数这两种方法都行,用函数只能是传地址的方法 Llllln 发表于 2020-7-20 16:27
我试过是不对的
你既然知道不对,那就说明这个不行呀
你交换指针,相当于把地址换了下,你改变了地址对应的值了吗?
好比,你有两个盒子,盒子里面有东西,你如果不打开盒子把里面的东西拿出来交换,你纯粹地把两个盒子移来移去,你觉得你能改变里面的东西吗? 函数传值和传地址要搞清楚
页:
[1]