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

聊以此文记录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类型



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值