C语言多维数组

Python018

C语言多维数组,第1张

&multi[0]不等于multi[0],

multi也不等于multi[0],

multi[0]是一维指针

multi是一个二维指针。

multi[0][0]表示一个具体的int值。

你用%u输出的结果实际上都是输出了multi[0][0]的值。

c语言默认最多是二维数组;当然如果用指针自己分配内存的话可以自行进行计算,进行更多维的表示。

原则上,C语言中数组所包含的元素个数理论上多少都行,如果要开一个很大的数组,比如int arrayint[10000][10000];在main()中声明该数组就会使应用程序退出,但是如果把该数组的声明放在所有函数体之外,让它变成一个全局变量,就没有任何限制了,想开多大的数组都可以。

扩展资料:

如果一个变量名后面跟着一个有数字的中括号,这个声明就是数组声明。字符串也是一种数组。它们以ASCII的NULL作为数组的结束。要特别注意的是,中括号内的索引值是从0算起的。

如果一个变量声明时在前面使用 * 号,表明这是个指针型变量。换句话说,该变量存储一个地址,而 *(此处特指单目运算符 * ,下同。C语言中另有 双目运算符 *) 则是取内容操作符,意思是取这个内存地址里存储的内容。指针是 C 语言区别于其他同时代高级语言的主要特征之一。

参考资料来源:百度百科-c语言

一维的可以理解为行形式

二维的是行列式

三维的可以这样理解

每一个[]代表一个方向 当然三维以上的数组不太容易用实体模式想像 但大概方式是一样的

先搞明白1 2 3维对应于下标的方式 指针 地址的对应关系

比如对于int a[2][3][4]而言

a[1]  a[1][1] a[1][1][1] a[1][1][3] a[1][2][0]

搞清以上几项的地址关系

组数基本我们可以按行读来理解[具体对应于代码]

即 1维 从左向右读

2维 a[2][3] 从左向右工a[][0]~a[][2] 3格 成为一行 每一行对应一个a[]

三维a[4][2][3]的在此基础上增加到4个层面 (原来的2维对应为2*3格的一个面)