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

上一篇介绍了三道非常经典的考数据类型长度、数据范围和数据类型转换的笔试题。这一篇开始复习常量和变量,输入和输出。

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

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

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

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

我们正式开始:

常量

数据的表现形式有两种:常量 变量

常量 是一种在程序中保持固定类型和固定值的数据。编译系统从数据形式上可以区分(除枚举类型外)

比如宏常量:

常量的种类

常量分为:

a、整型常量

b、实型常量

c、字符常量

d、字符串常量

e、枚举常量(后面再讲)

有时候我们看代码我们会看到这样的一些标志:

常量标志

1、整型常量

十进制常量:18、-31,

long int型常量:123l、123L、123456l、123456L;(这个l或者L只是说明这个数是long类型的常量,写不写都没关系)

unsigned int型常量:123u、 123U(这个u或者U只是说明这个数是unsisgned类型的常量,写不写都没关系);

根据实际数据大小确定int型还是long型。

2、以数字"0"开始的整型常量是八进制数

比如022、-037。注意010(八进制)和10(十进制)大小不一样。因为八进制并不常用,所以此种表示法比较少见。

3、以"0x"或者"0X"开始的整型常量是十六进制

A~F和a~f用来表示十进制的10~15,十六进制的形式比较常用:0x12、-0x1F, -0x1f...

4、实型常量

十进制小数形式:123.45、456.78;

指数形式:1e-2、4.5e3(4.5乘以10的3次方);

float型常量 123.45f、 456.78F、1e-2f、4.5e3F;

long double型常量 123.45l、 456.78L;缺省为double

5、字符常量的表示方法

比如:'a'、'A'、'5'、'%'、'$';单引号内只能有一个字符,除非用"\"开头

注意:'5'和5的区别

字符在内存中是以ASCII码存储的,比如'a'它其实也是以数字的形式在内存中存储的,我们想要查它对应的这个数值,我们就可以去查找ASCII码表,可以看到'a'对应的数值是97,那它在内存中是以97的二进制数值存储的。

6、用'\'开头的字符为转义字符

例如,'\n',代表1个字符

7、字符串常量

字符串常量是一对双引号括起来的字符序列;

合法的字符串常量:"How do you do."、"CHINA"、"a"、"$123.45";

可以用printf直接输出一个字符串,如printf("How do you do.");

C规定:在每一个字符串常量的结尾加一个"字符串结束标志",以便系统据此判断字符串是否结束。C规定以字符'\0'作为字符串结束标志,用sizeof求字符串长度的时候不计算"\0",但是字符串数组大小要计算"\0"

如:如果有一个字符串常量"CHINA" ,实际上在内存中是:

|---|---|---|---|---|-----|
| C | H | I | N | A | \0 |

它占内存单元不是5个字符,而是6个字符,最后一个字符为'\0'。但在输出时不输出'\0'。

变量

变量 是在程序执行过程中可以改变

const关键字(笔试重点)

上一次我们复习了一个非常重要的关键字sizeof,这次我们再复习一个关键字const。

const这个关键字是介于常量和变量之间的,很多人把它理解为是将变量定义为常量 ,但其实它是用来把变量定义为只读变量。

将变量num定义成了只读变量,那就不能再直接通过num这个变量名来修改对应内存的值,如果硬改就会报错

硬方法不行,那就来软办法:

我们可以通过地址(指针)来间接修改num对应内存的值。

我们先取出num的地址

然后修改并打印出来看看

这样我们就把它修改成1000了

后面我们复习指针的时候还会继续剖析这个const

输入和输出

1、格式输入函数

scanf(格式控制字符串, 地址表列);

scanf("%d %f", &a,&b);

注:&取a第一个字节的地址;%表示获取的意思

2、格式输出函数

printf(格式控制字符串, 输出项表列);

函数原型:int printf(const char *format, ...);

注:"..."表示可变参数。

注意:scanf 不能加"\n"!输出printf可以加"\0"

格式输出的占位符

%d或%i按十进制有符号整数输出,正数的符号省略

%u按十进制无符号整数输出

%o按八进制无符号整数输出(不输出前导0)

%x或X按十六进制无符号整数输出(不输出前导符0x)

%c按字符型数据输出

%s按字符串数据输出

%f按小数形式输出(6位小数)

%e或E按指数形式输出实数

%%输出%本身

%g或G选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0

%p以十六进制输出(输出带有0x)

以上这些常用的占位符要记忆!

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

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

相关推荐
郝亚军1 天前
如何在Ubuntu和win10/11之间通过samba访问对方的文件
linux·服务器·ubuntu
四维碎片1 天前
【Qt】UDP跨平台调试工具
qt·学习·udp
曦云沐1 天前
【避坑指南】Ubuntu更新报错“Repository is not signed”的快速修复
linux·ubuntu·docker
踏过山河,踏过海1 天前
【用ui文件做个简单工具的开发,为什么修改完ui后,程序重新编译运行后,GUI界面还是不变呢?】
qt·ui
带土11 天前
10. .out文件
linux
STCNXPARM1 天前
Linux camera之V4L2子系统详解
android·linux·camera·v4l2架构
yueyuexiaokeai11 天前
linux kernel常用函数整理
linux·c语言
鄭郑1 天前
STM32学习笔记--I2C封装与OLED(2026.2.1)
笔记·stm32·学习
向阳开的夏天1 天前
麒麟V10源码编译QT5.6.3 (x86 & arm64)
开发语言·qt
想放学的刺客1 天前
单片机嵌入式试题(第29期)嵌入式系统的电源完整性设计与去耦电容选型。抗干扰设计与EMC合规性
c语言·stm32·嵌入式硬件·物联网·51单片机