C语言进阶用法(嵌入式工程中用到的进阶用法)

1.定义结构体变量,使用这个变量创造一个数组

结构体数组,即结构体组成的数组。先声明一个结构体,再创造数组完成定义。

如:

typedef struct

{

        unsigned int  Temporary_A;

        unsigned int  Temporary_B;

        unsigned int  Temporary_C;

}Struct_Temporary;

Struct_Temporary_Data    Array_Temporary[10];

Array_Temporary[2].Temporary_C=20;

2.C语言数据类型:

3.数值结尾的字母修饰:

U:无符号类型。

L:长

例如:0x3A00UL

4.break关键字:

C 语言中 break 语句有以下两种用法:

  1. 当 break 语句出现在一个循环内时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句。
  2. 它可用于终止 switch 语句中的一个 case。

如果您使用的是嵌套循环(即一个循环内嵌套另一个循环),break 语句会停止执行最内层的循环,然后开始执行该块之后的下一行代码。

5.volatile关键字:用来修饰易更改变量。

详解C/C++中volatile关键字_volatile c-优快云博客

6.强制数据转换

强制转换/不同变量类型赋值 注意两个基本点:

1.如果转换前后,数组字节数相等:就直接内存复制粘贴,转换前后变量在内存的2进制完全相等。变量不同只是对相同2进制数据的不同表示方法。

2.如果转换前后,数组的字节不等,就要分类讨论。

一 少字节转多字节  根据转化之前的变量类型选择往新增字节补0还是补1:如果是转换前是负数(变量类型为signed且最高位为1)就补1,其余情况就补0。

                                                        情况1 2所示图(注意看 b 和 b2的值,2进制数据是一样的)

  • 情况1负数转正数 :在新加字节补1,很大的正数
  • 情况2负数转负数 :在新加字节补1,还是负数。跟情况1的2进制数据一致(如上图所示)
  • 情况3正数转正数 :在新加字节补0, 还是正数
  • 情况4正数转负数 :在新加字节补0, 还是正数

如果变量从2个字节转化为4个字节,转化前后都是signed ,转化前是负数,就会自动补1。

assert关键字:判断

属性关键字:__attribute__()

const关键字:

1.函数形参传递:不能由const int* 隐式转化为int *

typdef 和 #define

  • typedef 仅限于为类型定义符号名称,#define 不仅可以为类型定义别名,也能为数值定义别名,比如您可以定义 1 为 ONE。
  • typedef 是由编译器执行解释的,#define 语句是由预编译器进行处理的。

头文件

头文件不可以声明普通的全局变量,如 :    int a=8;

头文件的系列作用:

1.在头文件中定义结构体变量,只要在源文件中引用头文件(即:#include **.h),就可以直接使用。

2.通常1个模块:一个头文件对应一个源文件(如:模块一含有 1.c和1.h),头文件含有源文件的函数声明。别的模块的源文件(如:模块2的 2.c)可以声明后(#include 1.h)直接使用1.c的函数。

---------------------------------------------------------------------------------------------------------------------------------函数

指针函数:

(void *)malloc(Num_Byte);

结构体带有指针函数:C语言 结构体struct成员函数(五)-猿说编程

memset(pointer,value,size);

10.逗号表达式

*(1,2,3)表示的是:3 

* 详细解析见:https://blog.youkuaiyun.com/lms1008611/article/details/80027466

*示例代码:

下图定义了一个三目运算符。其中的U32Cnt++就只进行运算,没有起到参数传递的作用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值