关于数组的新理解
来源:互联网 发布:淘宝互刷代付骗局 编辑:程序博客网 时间:2024/06/05 14:48
今天看串口的初始化代码,发现了一个多维数组的问题,居然花了好长时间才看懂,只能说内核代码看起来太伤脑筋了啊
先贴代码
static struct plat_serial8250_port uart8250_data[][3] = {
[MACH_LOONGSON_UNKNOWN] {},
[MACH_LEMOTE_FL2E] {PORT(4, 1843200), {} },
[MACH_LEMOTE_FL2F] {PORT(3, 1843200), {} },
[MACH_LEMOTE_ML2F7] {PORT_M(3, 3686400), {} },
[MACH_LEMOTE_YL2F89] {PORT_M(3, 3686400), {} },
[MACH_DEXXON_GDIUM2F10] {PORT_M(3, 3686400), {} },
[MACH_LEMOTE_NAS] {PORT_M(3, 3686400), {} },
[MACH_LEMOTE_LL2F] {PORT(3, 1843200), {} },
[MACH_LOONGSON_LS3EVA] {PORT_M(2, 33000000), PORT_M(2, 33000000), {} },
[MACH_LOONGSON_END] {},
};
下面是这样呢调用的
iotype = uart8250_data[mips_machtype][0].iotype;
其中mips_matchtype表示的是机器的架构,和上面数组中的架构对应
但是这其中语法是怎样的呢?以前完全没见过这样定义数组的啊
不急,我写了个小程序,如下
#include <stdio.h>
int main(){
int a[][2] = {
[0] {1,2},
[1] {3,4},
[2] {5,6},
};
printf("a[1][1] = %d\n",a[1][1]);
return 0;
}
这个代码运行下,基本就知道上面程序是怎么一个原理了。输出结果是4
只是这种写法以前我c语言了解地少,真没见过,以后再也不敢说自己c语言学的好了
那么返回回来,内核中这样定义串口端口的结果体意义何在呢?
就是为了定义不同设备的不同串口的port的信息,后面的uart8250_data[][3]表示最多打开4个串口
- 关于数组的新理解
- 关于数组的个人理解
- 关于二维数组的理解
- C#关于数组的理解
- 关于DP的一些新的理解
- 关于皮肤/容器的新理解
- 关于信息工程一些新的理解
- 关于继承和重写的新理解
- 关于特征值和特征向量的新理解
- 关于多维数组的“不形象”理解
- 关于指针和数组的重新理解
- 关于java数组的一点理解
- 关于循环、数组定义的理解
- 关于数组与指针的理解
- 关于数组和指针的一些理解
- php关于数组去重的理解
- 关于二维数组的指针理解
- 关于数组的理解(另类理解方法)
- sql 查询表的所有列信息
- Java XML解析之SAX解析
- asp.net中,用Ajax实现客户端调用服务器端的函数(PageMethods)
- 使用CXF框架开发WebService客户端
- TabBarController简单介绍
- 关于数组的新理解
- linux命令之gdb
- Java Web学习(3):Win7 64位操作系统搭建Java Web开发环境
- 新浪云-使用 PHP-Resque 实现后台任务
- TP3.2.3 Dialog封装
- python学习——sorted
- 关于获取用户当前位置
- 如何正確的使用迴圈(使用for_each)
- PHP之正则函数