项目1——C/C++语言中参数传递的三种方式

来源:互联网 发布:js跨域的实现原理 编辑:程序博客网 时间:2024/06/07 13:08
//(3)引用作形参#include<iostream>void myswap(int &x, int &y){    int t;    t=x;    x=y;    y=t;}int main(){    int a, b;    printf("请输入待交换的两个整数:");    scanf("%d %d", &a, &b);    myswap(a,b);  //分三个程序,分别写上调用myswap的合适形式    printf("调用交换函数后的结果是:%d 和 %d\n", a, b);    return 0;}
//(2)传地址
#include<iostream>void myswap(int *p1, int *p2){ int t; t=*p1; *p1=*p2; *p2=t;}int main(){ int a, b; printf("请输入待交换的两个整数:"); scanf("%d %d", &a, &b); myswap(&a,&b); //分三个程序,分别写上调用myswap的合适形式 printf("调用交换函数后的结果是:%d 和 %d\n", a, b); return 0;}
//(1)传值#include<iostream>void myswap(int x, int y){    int t;    t=x;    x=y;    y=t;}int main(){    int a, b;    printf("请输入待交换的两个整数:");    scanf("%d %d", &a, &b);    myswap(a,b);  //分三个程序,分别写上调用myswap的合适形式    printf("调用交换函数后的结果是:%d 和 %d\n", a, b);    return 0;}

使用传值方法调用函数时,交换不成功,所交换的是x和y的值,即形式参数,对于要交换的a和b是无效的。
使用传地址的方法调用函数时,所调用的是a和b的地址&a和&b,x和y分别作为指针指向a和b。执行过程中,t赋值为x指向的值,使得t=x,x所指向的值赋值为y指向的值,y指向的值赋值为t。
使用引用作形参方法调用函数时,加入引用数据类型,原来的a,b,对形式参数x,是a的引用,x与a所占内存相同,同理。y与b所占内存相同,所以在交换过程中,是交换了x和y所占用的空间,即交换了a和b。
 
阅读全文
0 0
原创粉丝点击