C++分别用指针和引用实现交换函数
2014-10-08 21:33
441 查看
前几天上课老师给出了一个课堂作业:请分别用指针和引用来实现两个数的交换。虽然题目比较俗套,但是好久没写过C++程序了,依然很生疏,所以我决定总结一下自己的实现,程序粗糙,风格也混合着C,希望大家给提提建议。
老师出这个题目的目的无非是想让我们联系一下C++基本功,采用指针的方式是C语言的风格,用指针来存储变量的地址,然后通过取地址的内容,直接对内存所存储的数据进行了操作,而引用则是C++风格,引用相当于对一个变量起了一个别名,正常的名字跟别名指示的是同一块内存地址,这里要注意指针与引用在使用过程的代码。#include<cstdio>
//#include<iostream>
//using namespace std;
int Ptr_swap(int *pa,int *pb){ //使用指针方式
int temp;
temp = *pa; //将指针指示的内容赋值给中间变量
*pa = *pb;
*pb = temp;
return 0;
}
int Cite_swap(int &ca,int &cb){ //使用 引用方式
int temp;
temp = ca; //因为引用是变量的别名,他们指向相同的内存空间
ca = cb; //所以可以直接使用别名来交换
cb = temp;
return 0;
}
int main(int args,char *argv[]){
//printf("hello ");
// char *s[] = {"yums","qq","tt"};
int x = 1;
int y = 2;
int *px = &x;
int *py = &y;
int Perror = Ptr_swap(px,py);
// cout<<x<<y<<endl;
printf("the sort by pointer is:%d %d \n",x,y);
int &cx = x;
int &cy = y;
int Cerror = Cite_swap(cx,cy);
printf("the sort by cite is:%d %d\n",x,y);
// printf("%c\n",86);
return 0;
}
老师出这个题目的目的无非是想让我们联系一下C++基本功,采用指针的方式是C语言的风格,用指针来存储变量的地址,然后通过取地址的内容,直接对内存所存储的数据进行了操作,而引用则是C++风格,引用相当于对一个变量起了一个别名,正常的名字跟别名指示的是同一块内存地址,这里要注意指针与引用在使用过程的代码。#include<cstdio>
//#include<iostream>
//using namespace std;
int Ptr_swap(int *pa,int *pb){ //使用指针方式
int temp;
temp = *pa; //将指针指示的内容赋值给中间变量
*pa = *pb;
*pb = temp;
return 0;
}
int Cite_swap(int &ca,int &cb){ //使用 引用方式
int temp;
temp = ca; //因为引用是变量的别名,他们指向相同的内存空间
ca = cb; //所以可以直接使用别名来交换
cb = temp;
return 0;
}
int main(int args,char *argv[]){
//printf("hello ");
// char *s[] = {"yums","qq","tt"};
int x = 1;
int y = 2;
int *px = &x;
int *py = &y;
int Perror = Ptr_swap(px,py);
// cout<<x<<y<<endl;
printf("the sort by pointer is:%d %d \n",x,y);
int &cx = x;
int &cy = y;
int Cerror = Cite_swap(cx,cy);
printf("the sort by cite is:%d %d\n",x,y);
// printf("%c\n",86);
return 0;
}
相关文章推荐
- 设计一个函数,既能计算圆的周长也能计算圆的面积(分别用指针和引用实现)
- c++将引用或者是指针作为函数参数实现实参的运算
- C++基础2 引用 函数扩展: 默认值 占位符 指针 重载 类:引用类指针 声明实现分开写
- C/C++ ------ 函数参数 为指针或引用时 强制转化 非常危险
- C++函数参数和返回值三种传递方式:值传递、指针传递和引用传递(着重理解)
- c++中引用和指针的内部实现
- 三种实现交换的方法,其中一个诡异的swap函数——C/C++语言(问题求助)
- 模版函数指针,C++委托的实现-原创
- c++函数参数类型-引用、指针、值
- 用函数和指针实现两个数的交换
- C#和C/C++指针实现swap交换
- 模版函数指针,C++委托的实现
- 利用函数和指针实现最小数和第一个数交换,最大数和最后一个数交换
- C++函数参数和返回值三种传递方式:值传递、指针传递和引用传递(着重理解)
- 用C语言来实现的类似C++函数的重载特性-----void*指针闲谈
- C++ vptr vtbl (C++虚表指针,虚函数表,虚函数的实现)很多人都喜欢问这个,写下吧。
- 条款31: 千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用 (转自effective c++ second edition)
- 从实现装饰者模式中思考C++指针和引用的选择
- C++点滴:向函数中传递指针和传递指针的引用的区别:
- C++第六周任务5:解决用一个项目多个文件的方式实现,其中两个类的声明放在一个.h文件中,每个类的成员函数分别放一个文件,main()函数用一个文件。体会这样安排的优点。