细说C语言【关键字的功能及其应用场景】
C语言中一共32个关键字,看这一篇就够了!!!
数据类型关键字
-
unsigned/signed:
用于修饰整数类型;
另外char共有3种不同的类型:char、unsigned char、signed char;其中char才是真正的字符型,unsigned和signed是用来声明数值的 -
struct:
struct关键字可以将不同的数据类型的数据打包成一种构造数据类型;其中每个成员都可以是一个基本数据类型或另一个构造类型;一般情况下,结构体的内存大小是其成员所占内存之和;空结构体在内存大小在不同编译器也有0和1 -
union:
union与struct非常相似,但也有区别。struct中的每个成员,系统都会单独分配对应的内存空间;而union的数据成员是互斥的,它只配置一个足够大的空间来容纳最大长度的数据成员;即union所有成员公用一个空间,同一时间只能存储其中一个数据成员,所有数据成员的起始地址是相同的 -
void:
void 的作用是对函数返回值的限定、对函数参数的限定和声明空类型指针
如果定义函数时不加返回类型限定,则编译器会作为返回整形处理,而不是void;用void声明函数标识该函数无返回值;
当参数无参时,可以给无参函数传送任意类型的参数而不影响程序执行;只有用void指明函数无参时,给无参函数传递参数时才会报错
void指针可以接收来自任意数据类型的指针赋值,但void指针不能再没有强制转化的情况下直接赋值给其他类型指着
控制语句关键字
循环语句类型关键字
条件语句类型关键字
goto:goto语句可以和if连用形成循环结构
开关语句类型关键字
swich-case组合可以看作if-else的加强版,后者适用于二分支及嵌套少的分支,前者在多分支处理时候更有效率
case语句要注意为了避免多个分支重叠,需要在case结尾加上break;不要忘记的default
返回语句类型关键词
存储类型关键字
-
auto:声明自动变量,由编译器自动分配及释放。在缺省情况下,编译器默认所有变量都是auto
-
static:为声明静态变量,主要修饰变量和修饰函数——细说C语言【const和static的意义及用法】
-
extern:关键字置于变量或函数前,表明变量和函数的轻易在其他文件中。链接器在遇见此类变量时会在其他模块中解析次标识符
-
register:编译器尽可能的将变量存放在CPU的内部寄存器中,而不是通过内存寻址来访问变量,这有效的提高了效率。CPU是不直接与内存打交道的,CPU与内存之间的数据传输需要经过寄存器,故而将变量存储在寄存器可以提高运行效率
PS:寄存器起始就是一块一块小的存储空间,只不过其存储数据要比内存快得多
其它关键字
-
const:修饰只读变量——细说C语言【const和static的意义及用法】
-
sizeof:后面常跟一个括号,但是它不是函数,它可以计算数据类型的大小,单位为字节
-
typedef:是给一个已经存在的数据类型取一个别名,而不是定义新的数据类型。尤其是结构体之类的自定义数据类型
-
volatile:是一种类型修饰符,编译器会对它修饰的变量进行特殊地址的稳定访问而不进行代码上的优化,如果你需要某个变量值的稳定,而它有可能在程序执行过程中移动到其他地方时发生改变,为了放置编译器偷懒,则你需要在关键词前加上volatile修饰
相关文章
【数据结构】——哈夫曼树
速通回忆 这里是完整的代码和运行结果,可以直接选择看下面代码的思路去快速回忆哈夫曼树,或从下面理论部分开始学习 ``` #include "stdio.h" #include "stdlib.h" /* 哈夫曼树结点的结构体 */ typedef struct { int weight; /* 权重 */ int parent; /* 父母结点下标 */ int l...
强化C【C语言笔记】——位运算
位运算符C语言提供了六种位运算符 - &:按位与 - !:按位或 - ^:异或 - ~:取反 - <<:左移 - \>>:右移 按位与运算 **其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0** 按位与运算通常用来对某些位清0 按位或运算 **其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就...
C语言中规中矩的大树
**没事干,写个树玩玩,真正的“撸树”** 在Ubuntu终端、VScode终端显示 代码 ``` #include "stdio.h" int main(){ int high = 5; //层高 int count = 5; //层数 int start; //每层开始*数 int...