目录
字符&字符串
char类型数据通常用于定义字符和字符串数据的集合。
字符串就是字符的数组,最后一个字符需要是‘\0’结尾。
两者区别:字符可以直接赋值,字符串不能。
不过,C语言提供了字符操作的函数给我们使用。
我们还可以用gets和puts函数进行字符串的输入和输出操作。
对于字符串我们还有一个重要的函数strlen(),可以测量字符串的长度并将其返回。
除此之外,对字符的表示我们用的是单引号,对字符串的表示用双引号。
并且对于一个字符,我们除了用占位符%c外,也可以用%d,区别就是%c表示的是字符内容,%d表示的是ASCII码值。如果我们想比较两个字符,我们既可以直接表述内容,也可以表示ASCII码。
枚举
1.什么是枚举
枚举是一种数据类型,它只包含自定义的特定数据,它是一组共同特性的数据的集合。
如:四季{春,夏,秋,冬}; 性别{男,女,保密};
举个生活中的例子,手机的通讯录就是枚举。
手机号码有11位数字,但我们并不会把11位数字全部存起来,而只在通讯录中取我们需要的号码,把这些需要的号码放在一个通讯录里,我们打电话只会从这个枚举中找数据。
枚举就是将一大堆数据当中,只取我们有用的,形成有共同性的。
这就是枚举的基本概念,枚举的意义就是限制变量的赋值,它只限定在我们设定好的一些特殊值。
2.C语言中枚举的书写格式
如:拨打小张的电话,只需要用枚举变量=小张,就可以呼出小张的手机号。
3.枚举的使用方法
3.1枚举变量定义的时候可赋值,也可以不赋值,不赋值会自动赋值,如图。
3.2注意事项
枚举数据是常量,不是变量。
数据存放在Flash中(不可变的)。
枚举内赋值必须是整型常数,可以是负数。
枚举变量只能赋给枚举内部标识的值。
3.3 编程实践。
结构体
1.程序中的结构体
结构体和数组一样,是属于C语言中的一个数据类型的结构。
2.枚举和结构体的区别
结构体是一个概括更多种数据类型的一种结构,枚举只是在同一种类型当中取得一部分数据。
结构体可以完成一些数组不能实现的功能,C语言中集合数据类型包括数组,枚举,结构体。
3.结构体的定义/赋值/调用
4.结构体的前缀typedef
5.结构体在程序中的应用
学会结构体之后,我们什么时候需要再结构体当中使用结构体呢?
在单片机编程中,几乎用不到结构体,不需要主动去使用结构体或枚举,关于结构体,我们只需要能看懂库函数中结构体的原理就可以了。
指针和数组
指针就是地址,每个寄存器都有唯一的地址号。stm32的地址号是32位的,所以定义一个指针就是使用4个8位寄存器组成一个32位的地址寄存器,地址内部存放的数据,就是指针存放数据的地址。
对指针的理解,可以简化成两个寄存器,指针的任何复杂用法,都是基于这个原理。
使用方法
指针前面定义的数据类型,是定义数据寄存器中的数据类型,而地址寄存器,32位单片机永远是固定的无符号32位寄存器。
举个例子
指针在使用时,需要注意跟乘号运算符之间的关系,因为C语言当中,乘号也使用*号表示。
数组和指针关系
数组是连续的内存块,数组就是地址。
如果把数组的地址都打印出来,它们彼此之间相差的都是4(因为int类型是占4个字节)
用指针p=a可以直接访问数组a的首地址。