【嵌入式——C语言】关键字
2023-12-13 03:36:31
数字类型相关
基本数据类型
类型 | 说明 | 占用字节(32位) |
---|---|---|
char | 声明字符型变量或函数返回值类型 | 1字节 |
short | 声明短整型变量或函数 | 2字节 |
int | 声明整型变量或函数 | 4字节 |
long | 声明长整型变量或函数返回值类型 | 4字节 |
float | 声明浮点型变量或函数返回值类型 | 4字节 |
double | 声明双精度浮点型变量或函数返回值类型 | 8字节 |
其他类型
类型 | 说明 |
---|---|
struct | 声明结构体类型 |
union | 声明共用体类型 |
enum | 声明枚举类型 |
signed | 声明有符号类型变量或函数 |
unsigned | 声明无符号类型变量或函数 |
void | 声明函数无返回值或无参数,声明无类型指针 |
struct 示例
struct Books
{
char title[50];
char author[50];
char subject[100];
int book_id;
} book;
union 示例
union U
{
char a;
int b;
}u;
enum 示例
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
};
signed、unsigned 示例
signed char c = 'a';
unsigned char c = 'a';
存储相关
register
register 存储类用于定义存储在寄存器中而不是 RAM 中的局部变量,在编译的时候告诉编译器这个是寄存器变量,尽量将其存储空间分配在寄存器.
注意:
- 定义的变量不一定真的在寄存器内
- cpu取数据的时候去寄存器中取,要比去内存中取速度快
- 因为寄存器比较宝贵,所以不能定义寄存器数组
- 只能修饰字符型和整形,不能修饰浮点型
- 不能对寄存器变量取地址,只有存放在内存中的数据才有地址
代码示例:
register int miles;
static
static 存储类指示编译器在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁。因此,使用 static 修饰局部变量可以在函数调用之间保持局部变量的值。
代码示例:
static int a=5;
auto
auto 存储类是所有局部变量默认的存储类。定义在函数中的变量默认为 auto 存储类,这意味着它们在函数开始时被创建,在函数结束时被销毁
代码示例:
auto int month;
extern
extern 存储类用于定义在其他文件中声明的全局变量或函数。当使用 extern 关键字时,不会为变量分配任何存储空间,而只是指示编译器该变量在其他文件中定义。
代码示例:
a.c文件
#include <stdio.h>
int count ;
extern void write_extern();
int main()
{
count = 5;
write_extern();
}
b.c文件
#include <stdio.h>
extern int count;
void write_extern(void)
{
printf("count is %d\n", count);
}
const
定义常量,如果一个变量被 const 修饰,那么它的值就不能再被改变,
- 修饰普通变量,代表只读的意思
const int a= 10;
- 修饰指针
const char str*
str指向的内存的内容不能通过str来修改,但是str的指向是可以改变的
char const str*char buf12[20] = "helloworlk"; const char* strc1 = buf12; *strc1 = 'w';//是错误的 表达式必须是可修改的左值 printf("strc1=%s\n", strc1);
str是只读变量,str不能指向其他地方,但是str指向的内存的内容是有可能可以修改的
const char const str*char buf11[20] = "helloworlk"; char* const strc = buf11; printf("strc=%s\n", strc);//strc = helloworlk *strc = 'w'; printf("strc=%s\n", strc);//strc = welloworlk strc = "123123";//是错误的
str不能指向别的地方,str指向的内存的内容也不能修改char buf13[20] = "helloworlk"; const char* const strc2 = buf13; printf("strc2=%s\n", strc2); strc2 = "123123";//是错误的
控制语句相关
关键字 | 备注 |
---|---|
if | 条件语句 |
else | 条件语句否定分支(与 if 连用) |
break | 跳出当前循环 |
continue | 结束当前循环,开始下一轮循环 |
for | 一种循环语句 |
while | 循环语句的循环条件 |
do | 循环语句的循环体 |
switch | 用于开关语句 |
case | 开关语句分支 |
goto | 无条件跳转语句 |
default | 开关语句中的"其它"分支 |
其他
sizeof
测量变量,数组的占用存储空间大小
sizeof(a);
typedef
重命名相关关键字
typedef short int INT16;
//INT16 b;和short int b;是一个效果
volatile
每次用volatile修饰的变量,都重新去内存中取,保证是最新的
volatile int vint;
文章来源:https://blog.csdn.net/weixin_39723539/article/details/134959794
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!