c++引用的说明与理解
2015-07-23 22:45
337 查看
int m;
int &r=m
n相当于m的别名(绰号),对n的任何操作就是对m的操作。
所以n既不是m的拷贝,也不是指向m的指针,其实n就是m它自己。
引用被创建的时候必须初始化,指针无所谓;
不能有NULL引用,指针没事;
一旦引用被初始化,不能改变引用的关系,指针没事。
C++语言中,函数的参数和返回值的传递方式有三种:值传递、指针传递和引用传递。
情形二三可以改变x;
自己写了另外一个小程序,更容易说明问题:
int &r=m
n相当于m的别名(绰号),对n的任何操作就是对m的操作。
所以n既不是m的拷贝,也不是指向m的指针,其实n就是m它自己。
引用被创建的时候必须初始化,指针无所谓;
不能有NULL引用,指针没事;
一旦引用被初始化,不能改变引用的关系,指针没事。
C++语言中,函数的参数和返回值的传递方式有三种:值传递、指针传递和引用传递。
情形一
//这里写代码片 func(int x) { x=10+x }
情形二
func(int *x) { *x=10+*x } 指针导向
情形三
func(int &x) { x=x+10; }
情形二三可以改变x;
自己写了另外一个小程序,更容易说明问题:
#include "iostream" using namespace std; void disp(int a[],int n) { for (int i=0;i<n;i++){ cout <<a[i]<<" "; } cout <<endl; } void swap1(int &n,int& m) { //引用 int temp; temp=n; n=m; m=temp; } void swap2(int a,int b) { //普通交换 int temp; temp=a; a=b; b=temp; } void swap3(int *p,int *q) { //指针 int temp; temp=*p; *p=*q; *q=temp; } int main(int argc,char *argv[]) { int a=1,b=2; swap1(a,b); printf("%d,%d",a,b); }
<textarea cols="80" rows="5" name="code" class="c/c++"> javascript代码内容 </textarea>
相关文章推荐
- Lua和C语言的交互详解
- 关于C语言中参数的传值问题
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言内存对齐实例详解
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- 探讨C语言的那些小秘密之断言
- C语言实现BMP转换JPG的方法
- 深入探讨C语言中局部变量与全局变量在内存中的存放位置
- C语言查找数组里数字重复次数的方法
- C语言泛型编程实例教程
- C语言中使用lex统计文本文件字符数
- C语言进制转换代码分享
- 基于C语言fflush()函数的使用详解
- C语言单链队列的表示与实现实例详解
- 关于C语言除0引发的思考
- 深入分析C中不安全的sprintf与strcpy
- Lua教程(四):在Lua中调用C语言、C++的函数
- C语言求幂计算的高效解法