## 标题:指针的值传递与地址传递,全局变量传递,与形参传递的区别与结果

标题:指针的值传递与地址传递,全局变量传递,与形参传递的区别与结果

1.值传递与地址传递
下面看着段代码:void swap(int a, int b){
int t;
t=a;
a=b;
b=t;
}
void swap1(int *p1,int *p2){
int t;
t=*p1;
*p1=*p2;
*p2=t;

}
main(){
int a=5,b=9,*pointer_1,pointer_2;
pointer_1=&a;
pointer_2=&b;
swap(a,b);
printf(“a=%d,b=%d\n”,a,b);
swap1(pointer_1,pointer_2);
printf(“a=%d,b=%d”,a,b);
}
//值传递与地址传递
我分别用了两个函数不同的传递方法
结果如下图:在这里插入图片描述
第一个为值传递,第二个为地址传递
##2全局变量的可以导致交换
代码如下:
#include <stdio.h>
int a=5,b=9;
void swap(int,int){
int t;
t=a;
a=b;
b=t;
}
int main(){
printf(“first: a=%d,b=%d”,a,b);
swap(a,b);
printf("\nsecond: a=%d,b=%d",a,b);
}
结果如下:
在这里插入图片描述
由上述代码可知全局变量可以发生值的交换。
3.形参的传递
代码如下:
#include<stdio.h>
swap(int p1,intp2){
int
p;
p=p1;
p1=p2;
p2=p;
}
main(){
int a=5,b=9,*pointer_p1,*pointer_p2;
pointer_p1=&a;
pointer_p2=&b;
swap(pointer_p1,pointer_p2);
printf(“a=%d,b=%d”,a,b);
}
//运行完程序后,p1指向a,p2指向b,函数运行只是交换了p1,p2的指向,既有运行完函数的三个赋值语句后,p1指向b
//p2指向a;并没有改变主函数a,b的值,程 序运行的结果a=5,b=9
结果如下:
![在这里插入图片描述](https://img-blog.csdn.net/20181022221420205?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyMzM3MzM1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA在这里插入图片描述
//运行完程序后,p1指向a,p2指向b,函数运行只是交换了p1,p2的指向,既有运行完函数的三个赋值语句后,p1指向b
//p2指向a;并没有改变主函数a,b的值,程 序运行的结果a=5,b=9

猜你喜欢

转载自blog.csdn.net/qq_42337335/article/details/83279801
今日推荐