首页 > 编程语言 > 详细

C++中的指针和引用,结合数组

时间:2014-03-04 14:37:59      阅读:500      评论:0      收藏:0      [点我收藏+]

聊以此文记录c++ primer的学习过程


int a = 3;
const int *b = &a;	//可以这样,将非常量的地址赋给b
		//此时,b认为自己指向的是常量,
		//所以不能通过b去修改a的值

const int &ar = a;	// ar引用a,不能通过ar去修改a的值

/*******************************/

const int a = 3;
int *ap =  &a;	// 错误,因为a是常量,而int *ap的言外之意,
		//是通过ap可以修改ap所指向的内容

int *ar = a;		//显然,也是错误;

/******************************/

const int &b = 5;	//正确,字面常量可以如此赋值给b;
int &c = 5;		//错误,5是常量,而int &c 是说c引用的不是常量


/******************************/

//附加上数组

int *ptrs[10];	//ptrs是含有10个整型指针的数组
		// 从右往左看,[10]代表ptrs是一个数组
		//而* 则代表数组每个项是指针;
		//int,则代表指针是int型的

int (*ptrs)[10];	//从括号内开始读;
		//ptrs是一个指针,而不是一个数组,
		//[10] 是说ptrs指向含10个元素的数组

int (&ptrRef)[10];	//同理,ptrRef是一个引用,
		//其引用一个含有10个整数的数组

int &ptrRef[10];	//错误!不存在引用的数组

int *(&array)[10];	//根据以上方法,array是一个引用
		//array引用一个含有10个元素的数组
		//每个元素是一个指针
		//每个指针是整型的
		// 因此,array是数组的引用,该数组含有10个指针;



typedef int arrT[10];		//arrT是一个类型别名,它表示的类型是含有10个整数的数组
using arrT = int[10];		//arrT的等价声明,
arrT* fun(int i);		//func 的返回值是一个指针,指向含有10个元素的数组

/******************************************/

int (*func(int i))[10];		//func(int i)表示调用func函数时,需要一个int类型的实参
			//(*func(int i)) 以为这可以对函数调用的结果执行解引用操作
			//(*func(int i))[10] 表示解引用func的调用将得到一个大小是10的数组
			//int (*func(int i))[10] 表示数组中的元素都是int类型



C++中的指针和引用,结合数组,布布扣,bubuko.com

C++中的指针和引用,结合数组

原文:http://blog.csdn.net/nisxiya/article/details/20391125

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!