提示:本系列文章是C语言的重难点-->指针
二维数组的a、a+1、a[i]、a[i]+1
- 前言
- 一、定义一个二维数组
- [二、表达式 `a`](#二、表达式
a
) - [三、表达式 `a + 1`](#三、表达式
a + 1
) - [四、表达式 `a[i]`](#四、表达式
a[i]
) - [五、表达式 `a[i] + 1`](#五、表达式
a[i] + 1
) - 总结
- 我是将军我一直都在,。!
前言
C语言中二维数组的a、a+1、a[i]、a[i]+1详解
在C语言中,二维数组是一种常见的数据结构,它的元素通过两级索引访问。了解二维数组指针运算中的a
、a+1
、a[i]
、a[i]+1
有助于掌握指针与数组的操作。以下是对这些表达式的详细解释:
一、定义一个二维数组
首先,我们定义一个二维数组以便于解释:
c
#include <stdio.h>
int main() {
int a[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
return 0;
}
在这个二维数组中,a
是一个2x3的数组,包含两行三列。
二、表达式 a
a
是一个指向包含3个int
的数组的指针。具体来说,a
的类型是int (*)[3]
。
c
int (*p)[3] = a;
三、表达式 a + 1
a + 1
表示二维数组中的第二行。因为a
是一个指向包含3个int
的数组的指针,所以a + 1
会跳过一整行,指向第二行的开头。a + 1
的类型也是int (*)[3]
。
c
int (*p)[3] = a + 1;
a + 1
指向的地址是a[1]
。
四、表达式 a[i]
在二维数组中,a[]
是不合法的表达式,不能单独使用。正确的用法应该是a[i]
,表示第i
行,a[i]
是一个一维数组,它的类型是int[3]
。
c
int *p = a[0]; // p指向a的第一行
五、表达式 a[i] + 1
a[i]
表示第i
行,它是一个一维数组,可以被解释为一个指向int
的指针。a[i] + 1
表示第i
行的第二个元素的地址。
例如:
c
int *p = a[0] + 1; // p指向a[0][1]
总结
a
:是一个指向包含3个int
的数组的指针,类型为int (*)[3]
。a + 1
:指向二维数组的第二行,类型为int (*)[3]
。a[]
:在单独使用时是不合法的,应该使用a[i]
,表示第i
行,类型为int[3]
。a[i] + 1
:表示第i
行的第二个元素的地址,类型为int *
。