二进制、十进制、十六进制转换表

2进制转十六 android 2进制转16进制视频_存储空间

 8421码,以4位为一组,不够左补0

2进制转十六 android 2进制转16进制视频_静态变量_02

 结构体


 枚举和结构体直接的区别

2进制转十六 android 2进制转16进制视频_静态变量_03

 C语言中的集合数据类型

2进制转十六 android 2进制转16进制视频_十六进制_04

 数组的局限性:数组里边只能包含一种类型的变量

定义结构体的方法

 结构体定义的关键字:

struct name { 类型 变量; }定义变量;

定义变量可以不设置
--------------------------------------------------------------------------------------
typedef struct { 类型 变量; }x;

此时的x一定要存在,它表示一种数据类型(结构体类型),可以用来定义其他变量

2进制转十六 android 2进制转16进制视频_十六进制_05

 结构体的使用方法 

用法一:

2进制转十六 android 2进制转16进制视频_存储空间_06

 

 用法二:

 在写入数据中,此时的x表示数据类型,用来定义 y 为结构体类型;调用也通过 y 来调用

2进制转十六 android 2进制转16进制视频_存储空间_07

结构体示例代码

#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说明的类型,常类型的变量或对象的值是不能被更新的。