二进制、十进制、十六进制转换表
8421码,以4位为一组,不够左补0
结构体
枚举和结构体直接的区别
C语言中的集合数据类型
数组的局限性:数组里边只能包含一种类型的变量
定义结构体的方法
结构体定义的关键字:
struct name { 类型 变量; }定义变量;
定义变量可以不设置
--------------------------------------------------------------------------------------
typedef struct { 类型 变量; }x;
此时的x一定要存在,它表示一种数据类型(结构体类型),可以用来定义其他变量
结构体的使用方法
用法一:
用法二:
在写入数据中,此时的x表示数据类型,用来定义 y 为结构体类型;调用也通过 y 来调用
结构体示例代码
#include<stdio.h>
#include<stdlib.h>
/*structure declare*/
struct str_func{
int a;
int b;
int (*add)(int a, int b);
int (*sub)(int a, int b);
int (*compare)(int a, int b);
};
int add(int a, int b){
return a+b;
}
int sub(int a, int b){
return a - b;
}
int compare(int a, int b){
if (a>b)
return a;
else
return b;
}
/*create a structure and init*/
struct str_func test = {
.a = 5,
.b = 7,
.add = add, //function pointer point to function
.sub = sub,
.compare = compare,
};
int main(){
if (test.compare)
printf("a b max = %d\n",(test.compare(test.a,test.b)));
if (test.compare)
printf("a add b = %d\n",(test.add(test.a,test.b)));
if (test.compare)
printf("a sub b = %d\n",(test.sub(test.a,test.b)));
return 0;
}
结果展示
a b max = 7
a add b = 12
a sub b = -2
静态变量(static)
静态变量 类型说明符是static。
静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在 静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都不释放),也可以认为是其内存地址不变,直 到整个程序运行结束(相反,而auto自动变量,即动态局部变量,属于动态存储类别,占动态存储空间,函数调用结束后即释放)。静态变量虽在程序的整个执 行过程中始终存在,但是在它作用域之外不能使用。
extern变量
Extern的问题在于不知道这个关键词出现的时候到底是声明还是定义。
谨记:声明可以多次,定义只能一次。
函数的声明extern关键词是可有可无的,因为函数本身不加修饰的话就是extern的。但是引用的时候一样是需要声明的。
而全局变量在外部使用声明时,extern关键词是必须的,如果变量无extern修饰且没有显式的初始化,同样成为变量的定义,因此此时必须加extern,而编译器在此标记存储空间在执行时加载如内存并初始化为0。
而局部变量的声明不能有extern的修饰,且局部变量在运行时才在堆栈部分分配内存。
关键字const
Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。