ca29a_demo_c++指针和数组_如何使用指针访问数组

这一生的挚爱 提交于 2020-02-08 09:43:46

/*29_CppPrimer_指针和数组
使用指针访问数组
指针的算术操作
解引用和指针算术操作之间的相互作用
下标和指针
计算数组的超出末端指针
输出数组元素
指针是数组的迭代器

*/

/*29_CppPrimer_指针和数组txwtech
使用指针访问数组
指针的算术操作
解引用和指针算术操作之间的相互作用
下标和指针
计算数组的超出末端指针
输出数组元素
指针是数组的迭代器

*/
#include <iostream>
#include <vector>
using namespace std;

int main()
{
	int ia[] = {9,2,4,6,8};
	int *ip = ia;

	cout << *ia << endl;
	cout << *ip << endl;

	ip = &ia[4];
	//ip=&ia[0];//同ip=ia;
	cout << *ip << endl;
	ip = ia;
	int *ip2 = ip + 4;//同 ip = &ia[4];//*ip2 = ia + 4;
	cout << *ip2 << endl;

	int *ip3 = ip + 10; //下标越界了,数据错误
	cout << *ip3 << endl;//下标越界了,数据错误

	ptrdiff_t n = ip2 - ip;//数据元素间隔几个数据,n=4
	cout << n << endl;
	
	int last = *ia;//对指针进行解引用
	cout << "last: "<<last << endl;

	int last1 = *ia+4;//先解引用,再加4,9+4=13
	cout << last1 << endl;

	int last2 = *(ia + 4);//移动指针4次,输出8
	cout <<"last2: "<<last2 << endl;

	int *p = &ia[2];
	cout << "*p: "<<*p << endl;

	int j = p[1];//p=&ia[2],p[1]=p+1,&ia[2]+1=&ia[3]=6
	cout << "j= " << j << endl;

	int k = p[-2];//p[-2]=p-2
	cout << "k= " << k << endl;//k=9

	const size_t arr_size = 5;
	int arr[arr_size] = {1,2,3,4,5};
	int *p2 = arr;
	int *p3 = p2 + arr_size;//超出末端的下一个指针,最后一个的下一个指针
	cout << "循环: " << endl;
	for (int *ptr = p2; ptr != p3; ++ptr)
	{
		cout << *ptr << endl;
	}

	const size_t arr_sz = 5;
	int int_arr[arr_sz] = {0,1,2,3,4};
	cout << "循环pbegin: " << endl;
	for (int *pbegin = int_arr, *pend = int_arr + arr_sz; pbegin != pend; ++pbegin)
		cout << *pbegin << endl;

	vector<int> ivec;
	ivec.push_back(10);
	ivec.push_back(20);
	ivec.push_back(30);
	ivec.push_back(40);
	ivec.push_back(50);
	cout << "循环迭代器: " << endl;
	for (vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); ++iter)
		cout << *iter << endl;
	return 0;
}

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!