当前位置:网站首页>二进制转换成十六进制、位运算、结构体
二进制转换成十六进制、位运算、结构体
2022-07-31 05:16:00 【小西在这里】
二进制转换成十六进制学习视频链接:第31集:二进制转换成十六进制_哔哩哔哩_bilibili
二进制、十进制、十六进制转换表
8421码,以4位为一组,不够左补0
结构体
学习视频链接:【洋桃电子】洋桃补习班(为0基础的初学者补足基础知识)STM32入门100步系列视频_哔哩哔哩_bilibilia
枚举和结构体直接的区别

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自动变量,即动态局部变量,属于动态存储类别,占动态存储空间,函数调用结束后即释放)。静态变量虽在程序的整个执 行过程中始终存在,但是在它作用域之外不能使用。
详细解释参考:static静态变量的理解 - dzqabc - 博客园
extern变量
Extern的问题在于不知道这个关键词出现的时候到底是声明还是定义。
谨记:声明可以多次,定义只能一次。
函数的声明extern关键词是可有可无的,因为函数本身不加修饰的话就是extern的。但是引用的时候一样是需要声明的。
而全局变量在外部使用声明时,extern关键词是必须的,如果变量无extern修饰且没有显式的初始化,同样成为变量的定义,因此此时必须加extern,而编译器在此标记存储空间在执行时加载如内存并初始化为0。
而局部变量的声明不能有extern的修饰,且局部变量在运行时才在堆栈部分分配内存。
详细参考:extern使用方法总结!_CSDNwei的专栏-CSDN博客_extern用法
关键字const
Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。
边栏推荐
- cocos2d-x-3.2 image graying effect
- Sqlite column A data is copied to column B
- Gradle sync failed: Uninitialized object exists on backward branch 142
- js中的函数
- Nmap的下载与安装
- 2021年京东数据分析工程师秋招笔试编程题
- quick-3.5 ActionTimeline的setLastFrameCallFunc调用会崩溃问题
- 腾讯云轻量服务器删除所有防火墙规则
- 活体检测CDCN学习笔记
- For penetration testing methods where the output point is a timestamp (take Oracle database as an example)
猜你喜欢

Navicat从本地文件中导入sql文件

OpenCV中的图像数据格式CV_8U定义

MySQL面试题大全(陆续更新)

VTK环境配置

Access database query

Gradle sync failed: Uninitialized object exists on backward branch 142

MySQL高级学习笔记

WeChat applet source code acquisition and decompilation method

Tencent Cloud GPU Desktop Server Driver Installation

JS写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数JS
随机推荐
2021美赛C题M奖思路
flutter 混合开发 module 依赖
qt:cannot open C:\Users\XX\AppData\Local\Temp\main.obj.15576.16.jom for write
VTK:Could not locate vtkTextRenderer object.
cocos2d-x-3.x 修改和纪录
Take you to understand the MySQL isolation level, what happens when two transactions operate on the same row of data at the same time?
WeChat applet source code acquisition and decompilation method
浏览器查找js绑定或者监听的事件
Web Screenshots and Reverse Proxy
安装Multisim出现 No software will be installed or removed解决方法
Nmap的下载与安装
2021年京东数据分析工程师秋招笔试编程题
Navicat从本地文件中导入sql文件
禅道安装及使用教程
np.fliplr与np.flipud
break and continue exit in js
js中的this指向与原型对象
小米手机短信定位服务激活失败
TransactionTemplate transaction programmatic way
js中的全局作用域与函数作用域