VC++ 介绍值传递/指针传递/引用传递的作用

来源:互联网 发布:傲剑神照经数据 编辑:程序博客网 时间:2024/06/14 22:26

下面5个函数哪个能够成功进行两个数的交换?

分析下面5个函数,用于了解值传递/指针传递/引用传递的使用方法。


#include<iostream>using namespace std;void swap1(int p, int q);void swap2(int* p, int* q);void swap3(int* p, int* q);void swap4(int* p, int* q);void swap5(int& p, int& q);int main() {int a = 1, b = 2;//swap1(a, b);//swap3(&a,&b);//swap4(&a, &b);swap5(a, b);cout << a << " " << b << endl;// 使得dos界面不闪屏            int i;cin >> i;return 0;}void swap1(int p,int q) {//值传递int temp;temp = p;         p = q;q = temp;}void swap2(int* p,int* q) {//语法错误,空指针/*int* temp;*temp = *p;*p = *q;*q = *temp;*/}void swap3(int* p, int* q) {//指针传递-指针指向变化int *temp;temp = p;p = q;q = temp;}void swap4(int* p,int* q) {//指针传递-指针指向的值变化int temp;temp = *p;*p = *q;*q = temp;}void swap5(int &p, int &q) {//引用传递int temp;temp = p;p = q;q = temp;}

swap1:值传递,a和b是全局变量,不能实现a和b的交换

swap2:指针传递:内存泄漏

swap3:指针传递:不能实现两数的交换,只是指针的变化

swap4:指针传递:可以实现两数的交换,指针指向的内容发生了变化

swap5:引用传递:可以实现两数的交换










0 0