C语言--关键字

目录

一、关键字

(一)数据类型相关的关键字

[(二) 存储相关关键字](#(二) 存储相关关键字)

(三)控制语句相关的关键字

(四)其他关键字


一、关键字

(一)数据类型相关的关键字

用于定义变量或者类型
类型 变量名;
char 、short、int 、long 、float、double、struct、union、enum 、signed、unsigned、void
1、char 字符型,用char 定义的变量是字符型变量,占1 个字节
char ch='c';正确
char ch1= '2'; 正确
char ch2 = '124' ; 错误的

2、short 短整型,用short 定义的变量是短整型变量,占2 个字节

short int a=12;

3、int 整型,用int 定义的变量是整型变量,在32 位系统下占4 个字节,在16 位系统下占2 个字节
int a=4;

4、long 长整型用long 定义的变量是长整型的,在32 位系统下占4 个字节
long int a=6;

5、float 单浮点型(实数),用float 定义的变量是单浮点型的实数,占4 个字节
float b=3.5f;

6、double 双浮点型(实数),用double 定义的变量是双浮点型的实数,占8 个字节
double b=2.8;

7、struct 是与结构体类型相关的关键字,可用它来定义结构体类型;

8、union是与共用体(联合体)相关的关键字;

9、enum 与枚举类型相关的关键字;

10、signed 有符号(正负)的意思
可在定义char 、整型(short 、int、long) 数据的时候会用signed 修饰,代表定义的数据是有符号的,可以保存正负数
例:

signed int a=2;
signed int b=-4;
注意:默认情况下signed 可以省略;

在定义char 、整型(short 、int、long) 数据的时候用unsigned 修饰,代表咱们定义的数据是无符号类型的数据
只能保存正数和0。
unsigned int a=11;
unsigned int a=-11; //错误

12、void 空类型的关键字
与char、int 、float 都可以定义变量不同,void 不能定义变量,没有void 类型的变量
void 是用来修饰函数的参数或者返回值,代表函数没有参数或没有返回值
例:
void fun(void){ }
代表fun 函数没有返回值,fun 函数没有参数

(二) 存储相关关键字

register、static、const、auto、extern

1、因为register 是寄存器的意思,所以用register 修饰的变量就是寄存器变量咯
即:在编译的时,让编译器知道这个变量是寄存器变量,是编译器尽量将存储空间分配在寄存器中。
注意:
(1)定义的变量不一定真的存放在寄存器中,他只是起到一个提醒的作用,尽量存放。
(2)至于为啥要将变量存到寄存器当中,主要是因为cpu 取数据的时在寄存器中比去内存中拿数据快
(3)为什么又只能让编译器尽量将变量存到寄存器,而不是直接放,这是因为寄存器比较宝贵,所以不能定义寄存器数组
(4)并且register 只能修饰字符型及整型的,不能修饰浮点型

register char ch;
register short int d;
register int a;
register float d;//错误的
(5):因为register 修饰的变量可能存放在寄存器中不存放在内存中,所以不能对寄存器变量取地址。因为只有存放在内存中的数据才有地址
register int a;
int *p;
p=&a;//错误的,a 可能没有地址

2、static 是静态的意思
static 可以修饰全局变量、局部变量、函数

3、const
const 是常量的意思
用const 修饰的变量是只读的,不能修改它的值
const int a=11;//在定义a 的时候用const 修饰,并赋初值为11,此后,就不能再给a 赋值了
a=111;//错误的
const 还可以修饰指针

4、auto int a;和int a 是等价的,auto 关键字现在基本不用
5、extern 是外部的意思,一般用于函数和全局变量的声明,这个在后面的课程中,会用到

(三)控制语句相关的关键字

if 、else 、break、continue、for 、while、do、switch casegoto、default

(四)其他关键字

sizeof、typedef、volatile
1、sizeof
使用来测变量、数组的占用存储空间的大小(字节数)
例3:
int a=10;
int num;
num=sizeof(a);
2、typedef 重命名相关的关键字
作用是给一个已有的类型,重新起个类型名,并没有创造一个新的类型
INT16 a;
INT32 b;
typedef 起别名的方法:

  • 用想起名的类型定义一个变量
  • unsigned int a;
  • 用新的类型名替代变量名
  • unsigned int INT16;
  • 在最前面加typedef
  • typedef unsigned int INT16;
  • 就可以用新的类型名定义变量了
  • INT16 b;和unsigned intb;//效果一样

3、volatile 易改变的意思
用volatile 定义的变量,是易改变的,即告诉cpu 每次用volatile 变量的时候,重新去内存中取
最新的值,而不是寄存器中的备份。
volatile 关键字现在较少适用
volatile int a=5;

相关推荐
特立独行的猫a9 分钟前
OpenHarmony平台移植 gifsicle:C/C++ 三方库适配实践(Lycium / tpc_c_cplusplus)
c语言·c++·harmonyos·openharmony·三方库适配·lycium
TImCheng060917 分钟前
内容运营岗位适合考哪个AI证书,与算法认证侧重点分析
人工智能·算法·内容运营
吴声子夜歌18 分钟前
ES6——对象的扩展详解
开发语言·javascript·es6
aq553560024 分钟前
编程语言对比:从汇编到PHP的四大层级解析
开发语言·汇编·php
赵域Phoenix27 分钟前
混沌系统是什么?
人工智能·算法·机器学习
kyle~30 分钟前
工程数学---Eigen库(C++唯一标配线性代数库)
开发语言·c++·线性代数
CoderCodingNo32 分钟前
【GESP】C++五、六级练习题 luogu-P1886 【模板】单调队列 / 滑动窗口
开发语言·c++·算法
paeamecium33 分钟前
【PAT甲级真题】- All Roads Lead to Rome (30)
数据结构·c++·算法·pat考试·pat
好家伙VCC38 分钟前
**发散创新:基于Rust的轻量级权限管理库设计与开源许可证实践**在现代分布式系统中,**权限控制(RBAC
java·开发语言·python·rust·开源
Cando学算法39 分钟前
双指针之快慢指针
算法