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

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

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值