往期回顾
1.【第一章】《认识C语言》
2.【第二章】C语言概述及基本知识1
3.【第二章】C语言概述及基本知识2
4.【第三章】字符串和格式化输入/ 输出
5.【第三章】 printf
6.【第三章】 scanf
7.【第三章】 putchar
8.【第三章】 getchar
9.【第三章】 sizeof
10.【第三章】 strlen
11.【第三章】 define
12.【第四章】运算符第一节
13.【第四章】运算符第二节
14.【第四章】运算符第三节
15.【第四章】运算符第四节
16.【第四章】类型转换
17.【第四章】函数与转化
18.【第五章】while
19.【第五章】for开篇
20.【第五章】for的灵活性
21.【第五章】逗号运算符
22.【第五章】do while
23.【第五章】循环选择
24.【第六章】if
25.【第六章】else if
26.【第六章】break
27.【第六章】continue
28.【第六章】break和continue的区别与作用
28.【第六章】switch
29.【第七章】函数复习
30.【第七章】函数参数
31.【第七章】函数中返回值
32.【第七章】递归
33.【第七章】指针引入
34.【第七章】指针简介
35.【第七章】指针简介2
36.【第八章】数组
37.【第八章】数组2
38.【第八章】多维数组
39.【第八章】指针与数组
40.【第八章】函数 数组 与指针
41.【第八章】使用指针形参
42.【第八章】指针操作
43.【第八章】const入门
44.【第八章】const 与指针
指针和多维数组原理
int zippo[4][2];/*内含int数组的数组 */
然后数组名 zippo是该数组首元素的地址。 在本例中,zippo的首元素是一个内含两个 int值的数组,所以 zippo 是这个内含两个 int 值的数组的地址。下面,我们从指针的属性进一步分析。
例子
#include <stdio.h>
int main(void)
{
int zippo[4][2] = { {2,4}, {6,8}, {1,3}, {5, 7} };
printf(" zippo = %p, zippo + 1 = %p\n",
zippo, zippo + 1);
printf("zippo[0] = %p, zippo[0] + 1 = %p\n",
zippo[0], zippo[0] + 1);
printf(" *zippo = %p, *zippo + 1 = %p\n",
*zippo, *zippo + 1);
printf("zippo[0][0] = %d\n", zippo[0][0]);
printf(" *zippo[0] = %d\n", *zippo[0]);
printf(" **zippo = %d\n", **zippo);
printf(" zippo[2][1] = %d\n", zippo[2][1]);
printf("*(*(zippo+2) + 1) = %d\n", *(*(zippo+2) + 1));
return 0;
}
图形化: