day22 二维数组和指针

int main()
{//二维数组实际上是一维数组的扩展int array[4][5]事实上定义四个元素的一维数组,每个元素包含五个整型变量的一维数组,array可理解为指向包含五个元素的数组指针。
	int array[4][5] = { 0 };
	printf("sizeof int %d\n", sizeof(int));
	printf("array:%p\n", array);
	printf("array+1:%p\n", array+1);//俩个指针的跨度,结果是14(16进制)10进制20,即跨越5个元素,(array指向四行五列数组的第一行)
	system("pause");
	return 0;

int main()
{

	int array[4][5] = { 0 };
	int i, j, k = 0;
	for (i = 0; i < 4; i++)
	{
		for (j = 0; j < 5; j++)
		{
			array[i][j] = k++;
		}
	}//利用循环赋初值,使元素值为0,1,2,3,4;5,6,7,8;9,
	printf("*(array+1):%p\n", *(array+1));
	printf("array[1]:%p\n", array[1]);
	printf("&array[1][0]:%p\n", &array[1][0]);
	printf("**(array+1):%d\n", **(array + 1));//对地址进行解引用(取值运算符对一个地址取值,把值取出来),就是取出里面的值,*(array+1)==array[1]==就是地址==第二行第一个元素的地址,**(array+1)就是取出地址的值。
	printf("*(*(array+1)+3):%d\n", *(*(array + 1) + 3));
	printf("array[1][3]:%d\n", array[1][3]);
	system("pause");
	return 0;
}
*(array+1):0093FDBC
array[1]:0093FDBC
&array[1][0]:0093FDBC
**(array+1):5//因为4行5列,第二行第一个元素是5,地址的值。
*(*(array+1)+3):8
array[1][3]:8
请按任意键继续. . .


*(array+i)==array[i]
*(*array+i)+j)==array[i][j];
数组指针和二维数组

定义一个数组指针int (*p)[3];
Int(*p)[3]=array;array是指向三个元素的数组的指针
int main()
{

	int array[2][3] = { { 0, 1, 2 }, { 3, 4, 5 } };
	int(*p)[3] = array;
	printf("**(p+1):%d\n", **(p + 1));*取值,*(p+1)指针
	printf("**(array+1):%d\n", **(array + 1));
	printf("array[1][0]:%d\n", array[1][0]);
	system("pause");
	return 0;
}
**(p+1):3
**(array+1):3
array[1][0]:3
请按任意键继续. . .

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值