#include <stdio.h>
void func(int *p1,int *p2);
main()
{
int a,b;
int *p1 = &a,*p2 = &b;
scanf("%d%d",p1,p2);
func(p1,p2);
printf("a=%d,b=%d",a,b);
}
void func(int *p1,int *p2)
{
int temp;
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
输入的 2 5
结果是 a=5 b=2
#include <stdio.h>
void func(int *p1,int *p2);
main()
{
int a,b;
int *p1 = &a,*p2 = &b;
scanf("%d%d",p1,p2);
func(p1,p2);
printf("a=%d,b=%d",a,b);
}
void func(int *p1,int *p2)
{
int *temp = p1;
p1 = p2;
p2 = temp;
}
输入的 2 5
结果是 a=2 b=5
这个是把地址交换 没有进入房子把值交换
把房子里值换掉需要有*
那就是说 除了把地址传给对方 对方还得用* 才能影响实参
这个形参传不回来
形参没有改变实参
#include <stdio.h>
void func(int *p1,int *p2);
main()
{
int a,b;
int *p1 = &a,*p2 = &b;
scanf("%d%d",p1,p2);
func(p1,p2);
printf("a=%d,b=%d",a,b);
}
void func(int *p1,int *p2)
{
int *temp;
*temp = *p1;
*p1 = *p2;
*p2 = temp;
}
这个编译失败
原因是temp指针变量只定义没有初始化
网友评论