赞
踩
#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指针变量只定义没有初始化
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。