C++基础-数组类型,及其数组指针

数组类型,及其数组指针

        一切都在代码中讲解了,有不明白的地方留言。或者自行根据运行结果分析。I trust you!

//数组类型
void main()
{
	//声明一个数组类型
	typedef int(Myarrray5)[5];
//1.用刚才声明的类型就可以定义一个变量,如下:
	Myarrray5 a;//其实就是int a[5]
	//接下来让Ty给它赋值
	for (int i = 0; i < 5;i++)
	{
		a[i] = 11 + i;
	}

	for (int i = 0; i < 5;i++)
	{
		printf("%d ",a[i]);
	}
	printf("\n---------------------\n");

//2.需要注意的是:
	//a代表数组首元素的地址,不是整个数组的地址
	//&a表示整个数组的地址 &a a代表的数据类型不一样
	//&a 数组类型 int[10]
	//a 数组首元素的类型

	printf("a:%d\n", a);
	printf("a+1:%d\n", a+1);
	printf("&a:%d\n", &a);
	printf("&a:%d\n", &a+1);
	printf("\n---------------------\n");
//3.用数组类型声明一个指针并且赋值:
	//比如:
	int x = 10;
	int *m_px = &x;
	//那么有以下情况:
	
	Myarrray5 *m_pa = &a;//在这里m_pa就是一个数组指针,它指向数组a。
	for (int i = 0; i < 5;i++)
	{
		printf("%d ",(*m_pa)[i]);
	}
	printf("\n---------------------\n");
//4.定义一个数组指针类型
	typedef int(*Parray5)[5];
	Parray5 m_pa5 = &a;

	for (int i = 0; i < 5; i++)
	{
		printf("%d ", (*m_pa)[i]);
	}
	printf("\n---------------------\n");
//5.直接定义一个数组指针接住一个数组
	int b[] = { 20, 30, 40, 50, 60, 70 };
	int(*pb)[6] = &b;
	for (int i = 0; i < 6;i++)
	{
		printf("%d ", (*pb)[i]);
	}
	printf("\n---------------------\n");
	printf("pb:%d\n",pb);
	printf("pb+1:%d\n", pb+1);//步长为24
//6.二维数组
	printf("\n---------------------\n");
	int c[2][3] = { 1, 2, 3, 4, 5, 6 };
	printf("c:%d\n",c);//数组首元素的地址	
	printf("c+1:%d\n", c+1);//步长为3*4 = 12;注意:这个和&a + 1的步长计算方式一样,所以。。。。。。
	//这个和 (*p)[3]
	printf("&c:%d\n", &c);//数组的地址
	printf("&c+1:%d\n", &c+1);//步长为 2*3*4 = 24;
//7.那么int (*pc)[3]和c有什么联系呢
	//1.c是一个常量指针,2.是一个数组指针
	//其实可以如下表示:
	int(*pc)[3] = c;
	for (int i = 0; i < 2;i++)
	{
		for (int j = 0; j < 3;j++)
		{
			printf("%d ", *(*(pc + i) + j));
		}
		printf("\n");
	}
	printf("\n");
	system("pause");
}

结果:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发如雪-ty

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值