C++中复杂声明的理解

本文介绍了理解C++中复杂声明的基本原则,包括从内向外、从左至右的阅读顺序。通过实例解析了指向指针的引用和复杂数组声明,如`int*&r=p;`和`int(*j)[10];`。并展示了如何将这些概念应用于函数参数,如`f(int&i[10])`和`f(int(&j)[10])`。
摘要由CSDN通过智能技术生成

C++中复杂声明

  记录一下自己对复杂声明的理解,有一个基本原则:由(括号)内向(括号)外,由左至右。
  目前遇到的基本都是指针、引用和数组这三个类型混杂在一起的情况,在最开始没了解规律的时候,很头大。了解的有两种情况,如下。
 

1、指向指针的引用

	int i = 0;
	int *p;
	int *&r = p;//r为指针p的引用

  上面代码的第三行中,由于没有括号,所以直接从右至左读即可,r的左边为&,所以r是一个引用,然后再接着往左读,看r是一个什么引用,int *,所以r是一个整型指针的应用。
 

2、复杂数组声明

	int *i[10];//长度为10的指针数组
	int (*j)[10];//指向长度为10的整型数组的指针

  上面代码的第一行:由于没有括号,那么从右开始,[10],i是一个size为10的数组,这里就已经把i定性为一个数组了,然后往左读,int *,所以数组中的元素是整型指针,所以i是一个长度为10的整型指针数组。
  上面代码的第二行:有括号,先读括号里的内容,j是一个指针,那么j定性为一个指针,然后在括号外面从右向左读,int[10],所以j是一个指向长度为10的整型数组的指针。
 
  把指针换成引用也同理,如下。

	//f为函数
	f(int &i[10]);//长度为10的引用数组
	f(int (&j)[10]);//指向长度为10的整型数组的引用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值