当前位置:网站首页>二进制转换成十六进制、位运算、结构体
二进制转换成十六进制、位运算、结构体
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说明的类型,常类型的变量或对象的值是不能被更新的。
边栏推荐
- Notes on creating a new virtual machine in Hyper-V
- 动态规划(一)| 斐波那契数列和归递
- Navicat从本地文件中导入sql文件
- ERROR Error: No module factory availabl at Object.PROJECT_CONFIG_JSON_NOT_VALID_OR_NOT_EXIST ‘Error
- 数据库 | SQL查询进阶语法
- C语言 | 获取字符串里逗号间隔的内容
- MYSQL transaction and lock problem handling
- Sqlite column A data is copied to column B
- cocos2d-x-3.2图片灰化效果
- Pytorch实现ResNet
猜你喜欢

Take you to understand the MySQL isolation level, what happens when two transactions operate on the same row of data at the same time?

Powershell中UTF-8环境中文乱码解决办法
![[Cloud native] Simple introduction and use of microservice Nacos](/img/06/b0594208d5b0cbf3ae8edd80ec12c4.png)
[Cloud native] Simple introduction and use of microservice Nacos

js中的全局作用域与函数作用域

活体检测FaceBagNet阅读笔记

Sqlite A列数据复制到B列

JS写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数JS

unicloud cloud development record

MySQL错误-this is incompatible with sql_mode=only_full_group_by完美解决方案

场效应管 | N-mos内部结构详解
随机推荐
Xiaomi mobile phone SMS location service activation failed
禅道安装及使用教程
Several forms of Attribute Changer
js中的函数
Tencent Cloud Lightweight Server deletes all firewall rules
数据库 | SQL查询进阶语法
[windows]--- SQL Server 2008 super detailed installation tutorial
VTK环境配置
mysql common commands
cocos2d-x-3.2 Physics
360 hardening file path not exists.
The latest MySql installation teaching, very detailed
QT VS中双击ui文件无法打开的问题
Podspec automatic upgrade script
Several solutions for mysql startup error The server quit without updating PID file
UiBot存在已打开的MicrosoftEdge浏览器,无法执行安装
quick lua加密
为什么bash中的read要配合while才能读取/dev/stdin的内容
[Cloud native] Simple introduction and use of microservice Nacos
浅谈对分布式模式下CAP的理解