嵌入式全栈开发学习笔记---C语言笔试复习大全9

目录

二维数组

二维数组的初始化

遍历二维数组

二维数组的数组名

笔试题11


上一篇复习了一维数组,这一篇我们来复习二维数组

说明:我们学过单片机的一般都是有C语言基础的了,网上关于C语言的资料有很多,大家如果对C语言不熟悉的话可以先去详细学一下,再以这篇博文作为复习资料学习。

这篇博文的目的是复习C语言,我们会陆续以30多个编程题作为复习要点,这30多个编程题基本涵盖了C语言所有的内容了,只要你掌握了这30多个编程题,那么你的C语言基本就没什么问题了。

注意:由于本专栏是嵌入式全栈开发专栏,为了我们能熟悉以后实际工作中的开发环境,我们写C语言全部在Linux中的vim编辑器中写,这么做事为了我们能够熟练掌握Linux系统的常用命令以及Linux上的vim编辑器的常用工作命令,以达到对口训练的目的!

vim编辑器的一些工作命令在上一篇博文中已经详细介绍过了,如果不了解可以先去看看。

我们正式开始:

数组

数组分为:

一维数组

二维数组

字符数组(笔试重点)

上一篇复习了一维数组,我们现在来看二维数组

二维数组

二维数组定义的一般形式为:

类型说明符 数组名[常量表达式][常量表达式];

例如:float a[3][4],b[5][10];

定义a为3×4(3行4列)的数组,b为5×10(5行10列)的数组。

二维数组的初始化

1、分行给二维数组赋初值。

例如: int a[2][3]={{1,2,3},{4,5,6}}; //最正规的写法

2、可以将所有数据写在一个花括号内,按数组排列的顺序对各元素赋初值。

例如:int a[2][3]={1,2,3,4,5,6}; //编译会报警告

3、可以对部分元素赋初值。

例如:

int a[2][3]={{1}, {5}, {9}}; //没有赋值的为0

int a[2][3]={{1}, {2, 3}};

4、如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。即行可以省,列不可以省。

例如:int a[2][3]={1, 2, 3, 4, 5, 6};

等价于:int a[ ][3]={1, 2, 3, 4, 5, 6};

5、二维数组初始化为全0,int a[2][3]={{0},{0}};有些编译器还支持写成int a[2][3]={0};

遍历二维数组

int a[3][4];

int i,j;

for(i=0;i<3;i++)

{

for(j=0;j<4;j++)

{

printf("%d ",a[i][j])

}

printf("\n");

}

二维数组的数组名

1、数组名a表示首行地址 ,即0x100,a + 1 = 0x110;(加1就到了下一行的地址)

2、a[0] (也可以写成 a[0][0] 表示首行首元素地址 ,即0x100,a[0] + 1 = 0x104;(加1就到了当行的第二个元素的地址);注意a[0]表示首行首元素的地址,a[1]表示第二行首元素的地址,以此类推

3、&a表示数组地址 ,即0x100,&a + 1 = 0x12C。(加1跨越了整个数组)

笔试题11

数组a[3][4],哪个不能表示a[1][1]的地址?

A、a[1] + 1

B、&a[1][1]

C、(*(a + 1)) +1

D、a+5

答案是:D

a表示首行的地址,+5就跳到第六行了,但是这个数组只有4行,所以已经不在这个数组范围内了。

a + 1是第二行的地址,*(a + 1) 变成第二行首元素的地址,(*(a + 1)) +1就变成了第二行第二个元素的地址。

以上就是这篇内容,如想了解更多,欢迎订阅本专栏!

如有问题可评论区或者私信留言,如果想要进交流群请私信!

相关推荐
春日见20 小时前
控制算法:PID算法
linux·运维·服务器·人工智能·驱动开发·算法·机器人
斌蔚司李20 小时前
Windows 电源高级选项
windows·stm32·单片机
郝学胜-神的一滴20 小时前
Qt OpenGL 生成Mipmap技术详解
开发语言·c++·qt·系统架构·游戏引擎·图形渲染·unreal engine
JiMoKuangXiangQu20 小时前
Linux eBPF 虚拟机简析
linux·ebpf 虚拟机
钿驰科技20 小时前
TC-BL2840驱动板在3D打印美甲仪无刷电机的应用
单片机·嵌入式硬件
EndingCoder20 小时前
接口基础:定义对象形状
linux·运维·前端·javascript·typescript
Larry_Yanan20 小时前
Qt安卓开发(一)Qt6.10环境配置
android·开发语言·c++·qt·学习·ui
huwei85320 小时前
QT 连接数据库类
数据库·qt·oracle
遇见火星20 小时前
Linux 运维:删除大日志文件时避免磁盘 IO 飙升,echo 空文件 vs truncate 命令对比实操
linux·运维·服务器
食咗未20 小时前
Linux SPI接口显示屏调试过程记录
linux