指针与引用

一、指针
指针式用来存放某个变量地址值的变量。
指针可以修饰所有的基本数据类型,并且可以指向数组、函数、指针以及文件。


指针的考题:
a)一个整型数(An integer)
b) 一个指向整型数的指针(A pointer to an integer)  
c) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer) 
d) 一个有10个整型数的数组(An array of 10 integers) 
e) 一个有10个指针的数组,该指针是指向一个整型数的(An array of 10 pointers to integers) 
f) 一个指向有10个整型数数组的指针(A pointer to an array of 10 integers) 
g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer) 
h) 一个有10个函数指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an integer argument and return an integer )
答案是:
a) int a; // An integer 
b) int *a; // A pointer to an integer 
c) int **a; // A pointer to a pointer to an integer 
d) int a[10]; // An array of 10 integers 
e) int *a[10]; // An array of 10 pointers to integers  (int * 修饰后面对数组)
f) int (*a)[10]; // A pointer to an array of 10 integers 
g) int (*a)(int);// A pointer to a function a that takes an integer argument and returns an integer 
h) int (*a[10])(int); // An array of 10 pointers to functions that take an integer argument and return an integer


二、引用:
引用时某个变量或对象的别名。 建立引用时,要用某个变量或者对象对它初始化
引用不是值,它不占用内存空间。引用只能说明,而不能定义。引用只是代替某个变量或对象的别名。
建立引用的格式如下:<类型说明符> & <引用名> = <变量名或对象名>


三、引用和指针的区别
1、指针是变量,引用不是变量。
引用不是变量,它本省没有地址值,它的地址值是它被绑定的变量或对象的地址值。


2、指针可以引用,而引用不可以引用。
例如:int *p;
         intt * &rp  = p;

3、指针可作数组元素,引用不可以作数组元素。

例如:int *p[5];

int a[5];
int & refa[5] = a;//错误。
因为数组不是一个变量,而是一个地址值。而引用只能是变量或者对象的引用,不能使其他的引用。

4、可以有空指针,但不能有空引用

例如
int *p = NULL;//合理。

int &refp = NULL; //无意义。


四、引用的应用

1、引用作为函数参数

在C++程序中,作为函数参数。引用作为函数参数可以达到指针作函数参数的相同目的:传递参数不拷贝副本,在被调用函数中改变调用函数参数值。引用来传递参数,对于函数的可读性较好。

引用达到传址调用的两个目的:不拷贝副本和传递数据。

2、引用作为函数的返回值

3、使用const 来保护引用。

让引用传递的参数,即达到了传递数据的目的,有防止了数据被不期望的修改。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值