c++primer之数组

一、对数组的元素使用取地址符就能得到指向该元素的指针

二、在很多用到数组名字的地方,编译器会自动的将其替换为指向数组首元素的指针

三、当使用数组作为一个auto变量的初始值时,推断得到的类型时指针而非数组

四、decltype返回的类型是由10个整数构成的数组

五、可以通过数组名字或数组中首元素的地址得到指向首元素的指针, 可以通过获取数组尾元素之后的那个不存在的元素的地址

六、c++11引入了begin和end,但与容器中的begin和end不同,begin 返回指向ia首元素的指针,end返回指向ia尾元素的下一个位置的指针

// 对数组的元素使用取地址符就能得到指向该元素的指针
	string nums[] = { "one", "two", "three" };
	string* p = &nums[1];
	cout << *p << endl; // two

	//在很多用到数组名字的地方,编译器会自动的将其替换为指向数组首元素的指针
	string* p2 = nums;
	cout << *p2 << endl; // one

	// 当使用数组作为一个auto变量的初始值时,推断得到的类型时指针而非数组
	int ia[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
	auto ia2(ia); // auto ia2(&ia[0])
	cout << ia2 << endl; // 地址
	cout << *ia2 << endl; // 0

	// decltype返回的类型是由10个整数构成的数组
	decltype(ia) ia3 = { 0,1,2,3,4,5,6,7,8,9 };
	cout << ia3[0] << endl; // 0

	// 可以通过数组名字或数组中首元素的地址得到指向首元素的指针
	// 可以通过获取数组尾元素之后的那个不存在的元素的地址
	int* e = &ia[10];
	for (int* b = ia; b != e; ++b) {
		cout << *b << endl;
	}
	// c++11引入了begin和end,但与容器中的begin和end不同
	// begin 返回指向ia首元素的指针
	// end返回指向ia尾元素的下一个位置的指针
	int* beg = begin(ia);
	int* last = end(ia);
	cout << *beg << endl; // 0
	cout << *last << endl; // 地址

	constexpr size_t sz = 5;
	int arr[sz] = { 1, 2, 3, 4, 5 };
	int* aip = arr;
	int* aip2 = aip + 3;
	cout << *aip << endl; // 1
	cout << *aip2 << endl; // 4, aip2指向arr[3] 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值