指针与数组

#include <iostream>
#include <iomanip>
using namespace std;

void main()
{
#define DIM2
#ifdef DIM2
	int sz[2][3] = {
		1, 2, 3,
		4, 5, 6
	};
	
	int *pa = sz[0];	//{1, 2, 3}
	int *pb = sz[1];	//{4, 5, 6}

	int *pc[2] = {pa, pb};	//指针数组, 是个数组
	int (*pd)[3] = sz;	//数组名式指针, 是个指针: 数组名为sz, 那这个sz是什么类型呢?答案: int (*pd)[3]

	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			//cout << setw(4) << *(sz[i] + j);
			//cout << setw(4) << *(pa + 3*i + j);
			cout << setw(4) << *(*(pd +i) + j);
		}
		cout << endl;
	}
#else
	int sz[2][3][4] = {
		 1,  2,  3,  4,
		 5,  6,	 7,  8,
		 9, 10, 11, 12,

		13, 14, 15, 16,
		17, 18,	19, 20,
		21, 22, 23, 24
	};

	int *pa = sz[0][0];		//{1, 2, 3, ...., 11, 12}
	int *pb = sz[1][0];		//{13, 14, ....., 23, 24}

	int *pc[2] = {pa, pb};	//指针数组, 是个数组
	int (*pd)[3][4] = sz;	//数组名式指针, 是个指针

	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			for (int k = 0; k < 4; k++)
			{
				//cout << setw(4) << *(*(sz[i] + j) + k);
				//cout << setw(4) << *(pa + 3*4*i + 4*j + k);
				cout << setw(4) << *(*(*(pd + i) + j) + k);
			}
			cout << endl;
		}
		cout << endl;
	}
#endif
}





#include <iostream>
using namespace std;

void main()
{
	int a[] = {1, 2, 3, 4, 5};
	int *p1 = (int *)(&a) + 1;

	int *p2 = (int *)(&a + 1);	//这里的 +1 表示加上 1个a[5]数组的长度

	cout << *(a + 1)  << endl;	//2
	cout << *(p1 + 3) << endl;	//5
	cout << *(p2 - 2) << endl;	//4
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值