数组名与指针的关系?
2016-12-05 11:32
162 查看
一维数组的单位是元素,一维数组名代表首个元素的地址
二维数组的单位是一维数组,二维数组名代表首个一维数组的地址
为了方便理解,定a一维数组 aa二维数组 aaa三维数组
对于整型一维数组a来说:
a : 数组名,表示指针常量,保存数组首元素的地址,是一个常量,不 可以进行自加操作。
&a 代表数组的地址
对一维数组名取地址等于一维数组的地址;
对数组的地址取值等于等于一维数组的首元素的地址
对于二维数组来说,定义时不能省略列,可以省略行。
aa + i :第i+1个一维数组的地址
*(aa+i):第i+1个一维数组的首元素的地址
*(aa+i)+j:第i+1个一维数组的第j+1个元素的地址
*(*(aa+i)+j):第i+1个一维数组的第j+1个元素的值
&aa:对二维数组名取地址等于二维数组的地址
*(&aa) = aa:对二维数组的地址取值等于首个一维数组的地址
**(&aa) == *aa:对二维数组的首个一维数组的地址取值等于二维数组 首个一维数组的首元素的地址
对于三维数组来说:
&a:三维数组的地址
a:三维数组的数组名,也就是首个二维数组的地址
*a: 首个二维数组的首个一维数组的地址
**a:首个二维数组的首个一维数组的首元素的地址
***a:首个二维数组的首个一维数组的首元素的值
*(*(*(a + i) + j) + k);
a + i:第i + 1个二维数组的地址
*(a + i):第i + 1个二维数组的首个一维数组的地址
*(a + i) + j:第i + 1个二维数组的第j + 1个一维数组的地址
*(*(a + i) + j):第i + 1个二维数组的第j + 1个一维数组的首元 素的地址
*(*(a + i) + j) + k:第i + 1个二维数组的第j + 1个一维数组的 第k + 1个元素的地址
*(*(*(a + i) + j) + k):第i + 1个二维数组的第j + 1个一维数 组的第k + 1个元素的值
数组名当形参的时候,编译器将它当成指针看待的(强制类型转换),传一维数组名是用元素的指针来接,传二维数组名是用一维数组的指针来接,
a[3]
传一维数组名用元素的指针来接 int *a
a[2][2]
传二维数组名用一维数组指针来接 int (*a)[2]
a[3][2][2]
传三维数组名用二维数组指针来接 int (*a)[2][2]
数组指针什么时候用? 函数传参的时候用。
二维数组的单位是一维数组,二维数组名代表首个一维数组的地址
为了方便理解,定a一维数组 aa二维数组 aaa三维数组
对于整型一维数组a来说:
a : 数组名,表示指针常量,保存数组首元素的地址,是一个常量,不 可以进行自加操作。
&a 代表数组的地址
对一维数组名取地址等于一维数组的地址;
对数组的地址取值等于等于一维数组的首元素的地址
对于二维数组来说,定义时不能省略列,可以省略行。
aa + i :第i+1个一维数组的地址
*(aa+i):第i+1个一维数组的首元素的地址
*(aa+i)+j:第i+1个一维数组的第j+1个元素的地址
*(*(aa+i)+j):第i+1个一维数组的第j+1个元素的值
&aa:对二维数组名取地址等于二维数组的地址
*(&aa) = aa:对二维数组的地址取值等于首个一维数组的地址
**(&aa) == *aa:对二维数组的首个一维数组的地址取值等于二维数组 首个一维数组的首元素的地址
对于三维数组来说:
&a:三维数组的地址
a:三维数组的数组名,也就是首个二维数组的地址
*a: 首个二维数组的首个一维数组的地址
**a:首个二维数组的首个一维数组的首元素的地址
***a:首个二维数组的首个一维数组的首元素的值
*(*(*(a + i) + j) + k);
a + i:第i + 1个二维数组的地址
*(a + i):第i + 1个二维数组的首个一维数组的地址
*(a + i) + j:第i + 1个二维数组的第j + 1个一维数组的地址
*(*(a + i) + j):第i + 1个二维数组的第j + 1个一维数组的首元 素的地址
*(*(a + i) + j) + k:第i + 1个二维数组的第j + 1个一维数组的 第k + 1个元素的地址
*(*(*(a + i) + j) + k):第i + 1个二维数组的第j + 1个一维数 组的第k + 1个元素的值
数组名当形参的时候,编译器将它当成指针看待的(强制类型转换),传一维数组名是用元素的指针来接,传二维数组名是用一维数组的指针来接,
a[3]
传一维数组名用元素的指针来接 int *a
a[2][2]
传二维数组名用一维数组指针来接 int (*a)[2]
a[3][2][2]
传三维数组名用二维数组指针来接 int (*a)[2][2]
数组指针什么时候用? 函数传参的时候用。
相关文章推荐
- 数组的数组"、"数组的指针"、"指针的数组"和"指针的指针"的关系
- 数组与指针关系
- c/c++(疑3) C语言指针与数组之间关系
- 一维数组与指针的关系
- 指针和数组间的不明关系
- 数组的递进理解——由一维到多维,数组和指针的关系比较等
- 数组以及数组与指针的关系及函数返回值的
- 【转】数组与指针关系详解
- putchar和printf的区别,以及数组和指针的关系理解
- 从运算符的优先级来看数组和指针的关系
- c语言,指针和数组大小之间的关系
- 数组中和指针的关系
- 引用 彻底说明二维数组数组名和指针的关系
- 深入理解 C++ 指针(五)---数组和指针的关系
- 【转】 C 语言中数组和指针的关系
- 指针与数组的关系
- 二维数组 指针 形参 用一个关系图解决问题
- 什么是指针?什么是数组?指针和数组的关系?
- C++指针、数组、字符串数组、cout几者关系说明
- (5)让你不再害怕指针--数组和指针的关系