嵌入式全栈开发学习笔记---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就变成了第二行第二个元素的地址。

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

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

相关推荐
py.鸽鸽7 分钟前
王者农药更新版
stm32
夜间去看海14 分钟前
基于单片机的温度和烟雾检测
单片机·嵌入式硬件·温度烟雾
QMCY_jason16 分钟前
Ubuntu 安装RUST
linux·ubuntu·rust
慕雪华年20 分钟前
【WSL】wsl中ubuntu无法通过useradd添加用户
linux·ubuntu·elasticsearch
星汇极客28 分钟前
【星汇极客】单片机竞赛之2024睿抗机器人大赛-火线速递赛道(持续更新)
stm32·单片机·嵌入式硬件·机器人
苦逼IT运维35 分钟前
YUM 源与 APT 源的详解及使用指南
linux·运维·ubuntu·centos·devops
仍有未知等待探索1 小时前
Linux 传输层UDP
linux·运维·udp
zeruns8021 小时前
如何搭建自己的域名邮箱服务器?Poste.io邮箱服务器搭建教程,Linux+Docker搭建邮件服务器的教程
linux·运维·服务器·docker·网站
卑微求AC1 小时前
(C语言贪吃蛇)16.贪吃蛇食物位置随机(完结撒花)
linux·c语言·开发语言·嵌入式·c语言贪吃蛇
Hugo_McQueen1 小时前
pWnos1.0 靶机渗透 (Perl CGI 的反弹 shell 利用)
linux·服务器·网络安全