当前位置:网站首页>二进制转换成十六进制、位运算、结构体
二进制转换成十六进制、位运算、结构体
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说明的类型,常类型的变量或对象的值是不能被更新的。
边栏推荐
- qt:cannot open C:\Users\XX\AppData\Local\Temp\main.obj.15576.16.jom for write
- cocos2d-x implements cross-platform directory traversal
- podspec 校验依赖出错问题 pod lib lint ,需要指定源
- Sqlite A列数据复制到B列
- quick-3.6源码修改纪录
- Artifact SSMwar exploded Error deploying artifact.See server log for details
- 纯shell实现文本替换
- sql 添加 default 约束
- cv2.imread()
- Eternal blue bug reappears
猜你喜欢
朴素贝叶斯文本分类(代码实现)
Take you to understand the MySQL isolation level, what happens when two transactions operate on the same row of data at the same time?
Sqlite column A data is copied to column B
UiBot存在已打开的MicrosoftEdge浏览器,无法执行安装
数据库 | SQL增删改查基础语法
Android software security and reverse analysis reading notes
为数学而歌之伯努利家族
Artifact SSMwar exploded Error deploying artifact.See server log for details
unicloud 发布后小程序提示连接本地调试服务失败,请检查客户端是否和主机在同一局域网下
[windows]--- SQL Server 2008 super detailed installation tutorial
随机推荐
flutter arr dependencies
Tencent Cloud GPU Desktop Server Driver Installation
TransactionTemplate 事务编程式写法
this points to the problem
[swagger close] The production environment closes the swagger method
MySQL面试题大全(陆续更新)
活体检测PatchNet学习笔记
sql 外键约束【表关系绑定】
Navicat从本地文件中导入sql文件
多元线性回归方程原理及其推导
podspec自动化升级脚本
如何修改数据库密码
动态规划(一)| 斐波那契数列和归递
js中的break与continue退出
cocos2d-x-3.2创建项目方法
对js的数组的理解
[windows]--- SQL Server 2008 super detailed installation tutorial
WeChat applet source code acquisition and decompilation method
np.fliplr与np.flipud
mysql common commands