您的位置:首页 > 编程语言 > C语言/C++

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

2015-09-17 16:10 330 查看
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
请按任意键继续. . .
*/



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: