随笔分类 - Linux C开发学习
自己走过的坑要记下来
下次入坑尽快爬出来
新人入坑拽一把
摘要:7. 控制语句 if 语句 不推荐用else,虽然符合业务逻辑,但是不够直观,需要将前面 N 个条件判断看懂,才能明白何种条件下才能进入else语句块中。 因此,下面代码中最好用 else if (data % 3 == 2) int data = 0; cout << "请输入一个int数值:";
阅读全文
摘要:1. 数据类型 重点 return 先返回函数结果,后结束当前函数 返回函数结果:返回值放在eax寄存器中,然后ret返回 功能不同的代码之间要空行 一份代码注释风格不要多样化 /**/ 块注释不能嵌套 long long 是C99里面定义的 extern int data; 编译器理解为:该变量是
阅读全文
摘要:最近玩STM32,里面有个关键字 `__weak`,当我们重定义了用`__weak`修饰的函数时,运行过程中会调用我们重定义的函数。  { return
阅读全文
摘要:以下观点仅代表个人想法,不是标准 C语言中有三种循环控制语句(goto不作考虑),那么这三个语句除了语法不同外,是否还有其他区别呢? 像if语句和switch...case语句之间,除了语法不同外,switch...case对特殊的case值进行了跳转表优化,以空间换时间。 对于较为“古老”的机器,
阅读全文
摘要:&& 短路特性 遇到假即为假,不会判断下一组表达式 || 短路特性 遇到真即为真,不会判断下一组表达式
阅读全文
摘要:0. 本文结构概述 二维数组在内存中是线性存储 二维数组排序(C语言代码) 1. 二维数组在内存中是线性存储 2. 二维数组排序(C语言代码) #include <stdio.h> int main(int argc, char* argv[]) { int arr[3][4] = {34,15,3
阅读全文
摘要:0. 本文结构概述 switch...case语法格式 C和C++的switch不同点 switch...case反汇编 switch...case跳转表 case值间距过大不用跳转表 1. switch...case语句 switch (表达式1) // 表达式结果不能是实型、字符串 { case
阅读全文
摘要:前言 技术背景:能够使用信号量进行C语言编程使用 遇到问题:python的信号量阻塞导致线程无法接收kill的终止信号(SIGTERM) 步骤 将遇到的问题写成一个demo.py 用C语言将其复现一遍,对比其与python中的信号量不同之处,并进行多种测试 根据测试结果,带着问题查找资料,并进行总结
阅读全文
摘要:0. 本文结构概述 若函数无返回值,默认为int类型 返回值小于4B,存入寄存器EAX中 返回值大于4B小于8B,存入寄存器EAX和EDX中 返回值大于8B放入栈区的临时空间 1. 若函数无返回值,默认为int类型 2. 返回值小于4B,存入寄存器EAX中 3. 返回值大于4B小于8B,存入寄存器E
阅读全文
摘要:## 4字节对齐的实质 之前有想过为什么C语言的字符串库函数,几乎都要处理这种4字节对齐问题,查找资料后,认为原因是: 1. 若非对齐访问,需要读取两次,CPU做数据重组,导致软件运行效率低。 在看操作系统的硬件原子操作时,发现若对齐有误或不规范,会有以下两种问题发生: 2. 通过结构体跨主机通信时
阅读全文
摘要:参考文档如下: https://www.cnblogs.com/dingyunfeng/p/12735512.html https://developer.aliyun.com/article/378327 C接口文档:https://libvirt.org/html/libvirt-libvirt
阅读全文
摘要:总结 由int num = '1234';是否能编译、输出结果问题,引发了一系列的问题。 按照以往的知识储备,我认为字符类型变量赋值给int整型变量,这是字符类型强转为int类型。那么强转的概念又是什么呢? 百度词条给出这样的定义: 基本数据类型有:1.整型:byte,short,int,long
阅读全文
摘要:开发环境:VS2019(Debug x86) 功能:获取当前线程内ebp与函数返回值 结果: 代码示例: 1 #include <iostream> 2 #include <list> 3 using namespace std; 4 5 typedef struct 6 { 7 void* pre
阅读全文