
C语言
文章平均质量分 65
天马行空工作坊
专注图像处理、人工智能前言技术!欢迎各路好友一起交流~~~
展开
-
C语言switch-case中的变量声明对栈空间的影响及溢出风险分析
关键点结论栈空间分配编译器通常复用空间,占用量为单个case的最大值栈溢出风险在变量过大或系统栈较小时需警惕优化方案动态分配、缩小类型、编译器优化、调整系统配置最佳实践始终用{}隔离case作用域。避免在case中声明大数组。在嵌入式系统中优先使用静态内存池。原创 2025-03-21 17:18:51 · 557 阅读 · 0 评论 -
C语言学习--const修饰符的作用,如何强制修改const定义的对象内容
通过访问联合体的非 const 成员,我们可以绕过 const 修饰符,直接修改 const 数据。const 是 C 语言中的一个关键字,用于定义不可修改的变量。通过在变量声明中使用 const,可以指示编译器在代码中禁止对该变量进行修改,增加代码的安全性和可读性。start_ptr 是一个指针常量,表示指针本身不能修改,可以通过二级指针强制转换的方式,修改start_ptr的指向。在嵌入式编程中,寄存器通常是只读的,使用 const 修饰寄存器可以表明该寄存器值不会被程序更改,仅用于读取操作。原创 2024-11-08 18:04:27 · 1379 阅读 · 0 评论 -
对齐访问与非对齐访问
对齐访问(Aligned Access)指的是,数据存储在内存中时,其起始地址是该数据大小的倍数。现代计算机中,数据通常以字节(byte)为单位存储,而不同类型的数据(如整型、浮点型等)通常有不同的字节长度。对于某个数据类型,如果它的内存地址是其长度的整数倍,就称该数据是“对齐的”。例如,在32位系统中,假设我们有一个32位(4字节)的整数,那么它的起始地址如果是4的倍数(如0x0004、0x0008等),则该整数被认为是对齐的。对齐访问的主要优点在于,它能有效利用系统的内存总线和缓存,减少访问时间。原创 2024-09-14 17:12:50 · 2347 阅读 · 0 评论 -
原子操作好多问
四. 多核CPU的原子操作: 在多核CPU中,原子操作需要考虑多个核心同时访问共享资源的情况,需要使用特殊的机制来确保操作的原子性,如硬件支持的原子指令或锁机制。五. 硬件支持 & 多核原子操作: 多核CPU中的原子操作通常需要硬件支持,例如x86体系结构提供的原子操作指令,如lock前缀指令,用于确保操作的原子性。三. 单核CPU的原子操作: 在单核CPU中,原子操作通常是指在一个指令周期内可以完成的操作,不会被中断,例如赋值、递增、递减等操作。原创 2024-03-19 22:50:39 · 549 阅读 · 0 评论 -
指针常量和常量指针
指针常量和常量指针原创 2022-08-10 18:43:03 · 182 阅读 · 0 评论 -
大小端的理解以及宏定义实现的理解
详解大小端以及网络传输、宏定义实现原创 2022-08-06 14:46:28 · 1287 阅读 · 0 评论 -
C语言有关内存的几个疑问,以memset以及memcpy为例
笔记原创 2022-06-22 18:58:41 · 328 阅读 · 0 评论 -
Qt科学计算器
第一步:界面的设计,科学计算器的按钮有的存在上标下标,直接输入的是没有上下标效果的,因此必须采用其他方法,有两种思路,一是把所有文字做成图片,然后利用样式表实现,另一种就是在按钮上加上Qlabel并且借助htm语言实现。第二步,数学处理,也就是按钮按一下数据要做出相应的改变,两种思路。1)、利用自带的pressed、click、Release函数;2)...原创 2021-10-16 14:08:16 · 1145 阅读 · 0 评论 -
Qt之按钮添加背景图片的几种方法
注意:图片必须被添加到项目的资源文件中1、通过UI界面添加,找到样式表(stylesheet)选项,点进去选择添加资源,这里有三个选项,分别是backgound-image、border-image 、imagebackgound-image 在CSS 样式中的解释为:background-image 属性为元素设置背景图像。元素的背景占据了元素的全部尺寸,包括内边距和边框,但不包括外边距。默认地,背景图像位于元素的左上角,并在水平和垂直方向上重复。border-image 属性是一个简写属性,用于设原创 2021-08-31 09:22:08 · 8068 阅读 · 0 评论 -
数据转换(int、string、char*)
1、int转stringto_string();2、string转int利用atoi函数,但是需要先将string转化为char*;1 std::string str = "123";2 int n = atoi(str.c_str());3 cout<<n; //123注意事项:这时候要注意str输入的内容:输入:" 123gaf" 输出:123输入:" (-+)123" 输出:123空格或者-+都能正确转换输入:" c123gaf" 输出:0,一旦出现原创 2021-08-18 15:28:13 · 134 阅读 · 0 评论 -
字符串比较(string对象和char对象)
首先,这两个类型不同,因此比较的方式也不同。1、先来看char,如果是两个char对象,可以利用函数strcmpint strcmp(const char* s1,const char* s2);当s1 < s2时,返回负数;(2) 当s1 == s2时,返回值 = 0;(3) 当s1 > s2时,返回正数。所在头文件:string.h即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇’\0’为止。如:“A”<”B”“a”>原创 2021-08-18 15:04:00 · 1193 阅读 · 0 评论 -
尝试彻底搞懂虚函数!(测试平台:vs2018+win10)
首先链接几个博客地址:C++ 虚函数表解析 cout << "虚函数表地址:" << (int*)(&b) << endl; cout << "虚函数表 — 第一个函数地址:" << (int*)*(int*)(&b) << endl;这个博客中cout << “虚函数表地址:” << (int*)(&b) << endl;这个说法是错误的,这个方法求出原创 2021-08-16 15:13:20 · 140 阅读 · 0 评论 -
2021-08-11
lower_bound和upper_bound使用方法:lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的。在从小到大的排序数组中,lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。upper_bound( begin,end,num):从数组的begi原创 2021-08-11 19:32:26 · 72 阅读 · 0 评论 -
利用指针将输入的字符串倒序输出
#include<stdio.h>#include<string.h>int main(){ char str[80]; char * p; int n; int i; printf("Please enter strings:"); fgets(str, 80, stdin); n = strlen(str); p = &str[0]; /* printf("%s", p);*/ p = p + n-2; for (i = 0; i <原创 2020-05-24 00:00:14 · 11512 阅读 · 1 评论