C语言中有关二维数组的指针问题

来源:互联网 发布:网站授权码系统源码 编辑:程序博客网 时间:2024/05/20 06:26

本人大一第一次写博客,欢迎指正。
从举例入手会比较直观。
int a[2][3];//此处定义了一个二维数组。
a –>
a[0] –> a[0][0] a[0][1] a[0][2]
a[1] –> a[1][0] a[1][1] a[1][2]

请问 a 代表什么含义?

a代表第一个数组a[0]的地址,即a == &a[0]。此处可能会有些难于理解。此处a如果仅看数值和a[0][0]的地址一样也就是和a[0]一样,但a的意义和两者远远不同。a本质来讲是一个二级指针,a[0]本质来讲是一个一级指针,a[0][0]则代表二维数组的第一个元素。

那么数a,a[0]值为何会一样呢?
因为不论是三个整数组成的数组,如a[0],a[1];还是单个整数都开始于同一个地址。

问题:
1.a+1代表什么?
代表a[1]的地址
2.a[0]+1代表什么?
代表a[0][1]的地址
3.((a+1)+1) 代表什么?
代表元素a[1][1].

                                2017年6月21日23:48:54                                写于南京工程学院