C++笔记 3.5 数组

primer C++笔记

数组

定义和初始化内置数组

在这里插入图片描述

不允许拷贝和赋值

在这里插入图片描述

理解复杂的数组声明

在这里插入图片描述
默认情况下,类型修饰符从右向左依次绑定,对于ptrs理解比较简单:首先我们知道定义的是一个大小为10的数组,它的名字是ptrs,然后知道数组中存放的是指向int的指针。
但是对于Parray来说,从右向左就不太合理了。因为数组的维度是紧跟着被声明的名字的,所以就数组而言,由内向外阅读就比从右向左好多了,*Parray意味着Parray是个指针,Parray是一个指针,它指向一个int数组,数组包含10个元素。

int *&arry)[10] = ptrs; //arry是数组的引用,该数组含有10个指针

3.5.1节练习

//const int txt_size() { return 1; }
//常量表达式:能在编译时计算并获取结果的表达式
constexpr int txt_size() { return 1; }

void test01()
{

	unsigned buf_size = 1024;
	int ia[buf_size];			//常量值才可以
	int ia[4 * 7 - 14];			
	int ia[txt_size()];
	char a[11] = "fundamental";	//末尾“\0”
}
string sa[10];
int ia[10];
void test02()
{
	string sa2[10];
	int ia2[10];

	cout << sa[9] << endl;		//""
	cout << ia[9] << endl;		//0
	cout << sa2[9] << endl;		//""
	cout << ia2[9] << endl;		//开辟的连续内存,无意义值
}

访问数组元素

在这里插入图片描述

指针和数组

在很多用到数组名字的地方,编译器都会自动地将其替换为一个指向数组首元素的指针。
在这里插入图片描述
在这里插入图片描述
指针也是迭代器
在这里插入图片描述
标准库函数begin和end
在这里插入图片描述

	constexpr size_t sz = 5;
	int arr[sz] = {1,2,3,4,5};
	
	int *p = arr + sz;	//指向尾元素的下一位置,不要解引用
	int *p2 = arr + 10;	//p2无效,编译不会报错

在这里插入图片描述
在这里插入图片描述
解引用和指针运算的交互

int ia[] = {0,2,4,6,8};
int last = *(ia + 4); 	//*(ia + 4) 等价于 ia[4]
last = *ia + 4			//等价于ia[0] + 4

标准库类型限定使用的下表必须是无符号类型,而内置的下标运算无此要求
在这里插入图片描述

C风格字符串

在这里插入图片描述
混用string对象和C风格字符创
在这里插入图片描述
使用数组来初始化vector对象
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值