“深入C语言:字符、字符串、枚举、结构体和指针详解“

目录

字符和字符串

枚举

结构体

指针


字符&字符串

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的首地址。

  • 51
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值