C语言二维数组剖析【元素及元素地址的指针操作】

C语言二维数组指针操作,示例程序如下:

#include <stdio.h>
#include <stdlib.h>

int main()
{
	int a[3][4] = {
					1, 2, 3, 4,
					5, 6, 7, 8,
					9, 10, 11, 12
				  };
	printf("a:         %d\n", a);		//元素1的地址,即第一个元素地址

	printf("a[1][0]:   %d\n", &a[1][0]);//元素5的地址
	printf("*(a+1):	   %d\n", *(a + 1));//由输出结果看出,*(a+1)的地址为a[1][0]的地址

	printf("a[1][1]:   %d\n", &a[1][1]);//元素6的地址
	printf("*(a+1)+1:  %d\n", *(a + 1)+1);//由输出结果看出,*(a+1)+1的地址为a[1][1]的地址

	printf("a+1:	   %d\n", a + 1);	//由输出结果看出,a+1的地址为a[1][0](即元素5)的地址
	printf("a[2][0]:   %d\n", &a[2][0]);//元素9的地址
	printf("a+2:	   %d\n", a + 2);	//由输出结果看出,a+2的地址为a[2][0](即元素9)的地址

	printf("*(*(a)):     %d\n", *(*(a)));//*(*(a))即为a[0][0]的值
	printf("*(*(a)+1):   %d\n", *(*(a) + 1));//*(*(a)+1)即为a[0][1]的值
	printf("*(*(a+1)):   %d\n", *(*(a + 1)));//*(*(a + 1))即为a[1][0]的值
	printf("*(*(a+1)+1): %d\n", *(*(a + 1)+1));//*(*(a + 1))即为a[1][1]的值
	system("pause");
	return 0;


	/****************************************
	结   论
	1、(a+i)    代表整个第i行的地址,起始地址为第i行第一个元素的地址
	2、*(a+i)   代表第i行第一个元素的地址
	3、*(a+i)+j 代表第i行第j个元素的地址 即a[i][j]的地址
	4、*(*(a+i)+j)) 代表a[i][j]的值
	****************************************/

}
//程序运行结果:
/*
a:         3143976
a[1][0]:   3143992
*(a+1):    3143992
a[1][1]:   3143996
*(a+1)+1:  3143996
a+1:       3143992
a[2][0]:   3144008
a+2:       3144008
*(*(a)):     1
*(*(a)+1):   2
*(*(a+1)):   5
*(*(a+1)+1): 6
请按任意键继续. . .
*/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值