职业生涯规划之驱动开发笔试题

1.考了数组

2.循环链表

3.访问地址

4.中断服务函数的要求

5.const

6.volatile

7.static

8.SPI接口设计

9.芯片手册翻译

10.大端小端格式

11.重点还是在于指针数组上,以及一些数据结构

//-------------------------------------------------------------------------------------

     以后的方向就定位驱动开发吧,针对各个平台的,刚开始主要还是先从Linux下手为好,不过最好还是要有C语音基础才好,然后就是多看些操作系统方面的书籍,硬件方面的话加强接口方面的学习才是。对于职业发展方向我还是要专注于一个方向了,不能再乱来了。把驱动做好就够了,兴趣所在。

其实怎么说呢,学习的话还是在于勤奋好学,没有啥技巧,还是多读多看!相信有志者事竟成!!

下面还是就这些问题一一分解吧:

1.数组:

先查查概念,俺还是菜鸟级别的呵呵,调用百度上的概念:

二维数组A[m][n],每个元素的长度为t个字节,设a[p][q]为A的第一个元素,即二维数组的行下标从p到m,列下标从q到n,按“行优先顺序”存储时则元素a[i][j]的地址计算为:

LOC(a[i][j]) = LOC(a[p][q]) + ((i − p) * n + (j − q)) * t

按“列优先顺序”存储时,地址计算为:

LOC(a[i][j]) = LOC(a[p][q]) + ((j − q) * m + (i − p)) * t

存放该数组至少需要的单元数为(m-p+1) * (n-q+1) * t 个字节

然后题目是A【6*8】的二维数组,每个元素占的空间为6个字节,基地址为1000

数组的最后一个元素表示为A[5][7]

(1)计算所占的空间:这样套公式就可以了,(5-0+1)*(7-0+1)*6 = 288个字节

(2)计算A[1][4]的第一个字节的地址:

行优先存储也就是先填满一行,然后再换一行继续填充这样计算为:

LOCA[1][4] = 0x1000 + (十进制)((1*8)+ 4 ) * 6 =(十六进制)0x1048

百度上面说是有2种行列顺序,但在《C和指针》这本书中说的是行主序,也就是一行存满后就轮到下一行。

 

2.虚

 

原文地址:https://www.cnblogs.com/tao560532/p/2254381.html