萌新请教C语言指针问题
#include <stdio.h>/*int swap(int i,int j)
{
int t;
t=i;i=j;j=t;
printf("in function i=%d,j=%d\n",i,j);
}
int main()
{
int i=4,j=9;
swap(i,j);
printf("out function i=%d,j=%d\n",i,j);
}*/
void swap(int p1,int p2)
{
int t;
t=p1;
p1=p2;
p2=t;
}
int main()
{
int a,b;
printf("请输入a和b");
scanf("%d %d",&a,&b);
printf("交换前a=%d b=%d\n",a,b);
swap(a,b);
printf("交换后a=%d b=%d\n",a,b);
}
萌新想请教一下为啥同样是交换的函数,swap函数中只是void和int的区别。可是两个结果完全不同,一个可以成功交换位置,一个却不会交换两个变量。
void swap(int *p1,int *p2)
{
int t;
t=*p1;
*p1=*p2;
*p2=t;
}
int main()
{
int a,b;
printf("请输入a和b");
scanf("%d %d",&a,&b);
printf("交换前a=%d b=%d\n",a,b);
swap(a,b);
printf("交换后a=%d b=%d\n",a,b);
}
如果给swap函数中的变量变成指针,却可以进行交换。这又是为啥啊。 和int,void没关系
传入一个指针,操作的是地址,可以改变传入参数的值
而传入一个值,操作的是它的拷贝,是不可以改变的 qiuyouzhi 发表于 2021-3-25 18:21
和int,void没关系
传入一个指针,操作的是地址,可以改变传入参数的值
而传入一个值,操作的是它的拷贝 ...
好像有点明白,是不是a跟b虽然经过函数交换了,但是交换后的值没有重新赋值给我输入的a和b,以至于下面输出的a和b还是输入的值,因为指针指的是地址,地址交换了,所以对应值也变化了。然后输出的值就变化了 jsyzzyjd 发表于 2021-3-25 18:37
好像有点明白,是不是a跟b虽然经过函数交换了,但是交换后的值没有重新赋值给我输入的a和b,以至于下面输 ...
差不多了
页:
[1]