![](https://img-blog.csdnimg.cn/9164ce6239254f6a8cf7e1cdc092280a.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C/C++
文章平均质量分 77
C/C++编程的糟心日常
SecureCode
这个作者很懒,什么都没留下…
展开
-
【C++】整理了一些常见的排序算法
1. 冒泡排序2. 选择排序 3. 插入排序4. 希尔排序5. 快速排序6. 归并排序7. 堆排序 8. 计数排序9. 桶排序10. 基数排序原创 2023-06-13 19:06:26 · 1339 阅读 · 0 评论 -
【C++】深拷贝&浅拷贝
在 C++ 中,当一个对象通过赋值或拷贝即将成为另一个对象的副本时,会发生“浅拷贝”或“深拷贝”。当对象中只包含了基本数据类型成员时,可以使用浅拷贝;当对象中包含了指针类型成员时,需要使用深拷贝。原创 2023-06-04 22:23:59 · 2267 阅读 · 0 评论 -
【C语言】printf的输出格式控制符、格式修饰符、转义字符
格式控制符:%d:用于输出十进制有符号整数。%u:用于输出十进制无符号整数。%f:用于输出十进制浮点数字。%e或%E:用于输出指数形式的浮点数。%g或%G:用于输出浮点数,根据数值大小自动选择使用%f或%e。%x或%X:用于输出十六进制。%c:用于输出单个字符。%s:用于输出字符串。%p:用于输出指针地址。%lu:用于输出无符号长整型。%lld或%I64d:用于输出有符号长长整型。%llu或%I64u:用于输出无符号长长整型。%Lf:用于输出长双精度浮点数原创 2023-06-04 18:09:43 · 8387 阅读 · 0 评论 -
【C/C++】三目运算符的详细分析
C/C++ 三目运算符是一种极为简洁的条件运算符,它可以用于简化代码和提高代码的可读性。但在使用时,也需要注意适当地选择应用场景,避免过度使用导致代码可读性降低、复杂度增加和性能下降。在编写代码时,我们应该结合具体情况来选择适当的语句和运算符,以实现高质量的代码。原创 2023-06-03 23:19:57 · 23233 阅读 · 0 评论 -
【C/C++】常见问题之内存泄露
C/C++是一种常见的编程语言,其直接管理内存的特性,使其更加容易出现内存泄漏问题。本篇博客将详细介绍C/C++中的内存泄漏问题,包括内存泄漏的概念、原因、影响以及预防内存泄漏的方法。原创 2023-05-22 19:59:53 · 2803 阅读 · 1 评论 -
【C++】 友元(Friend)机制的利弊关系【友元函数、友元类】
在实际应用中,友元机制应该被谨慎地使用,只用于必要的情况,并尽可能地将私有成员封装成公有接口。友元是指在一个类中,另外一个类或函数可以直接访问其中被声明为友元的类的私有成员的机制。友元机制包含两种类型:友元函数和友元类。友元函数是一个非成员函数,可以直接访问一个类的私有成员。友元类是一个类,可以访问被它声明为友元的类的私有成员。原创 2023-05-30 14:46:49 · 1959 阅读 · 0 评论 -
【C++】【命名规范】你的代码风格是哪种?(驼峰命名法、下划线命名法、帕斯卡命名法、常量命名法等)
本文分享了常见的命名风格习惯(例如驼峰命名法、下划线命名法、帕斯卡命名法、常量命名法等),向读者推荐了C/C++中类名、接口名、函数名、变量名和常量的常见命名风格,以及扩展了一些常见的代码书写风格(例如{}),最后延申了两个对代码执行有影响的编程习惯。 希望本文能给各位读者带来些许帮助,同时也欢迎热心的码友提供自己的见解分享在评论区!原创 2023-06-03 14:37:43 · 7560 阅读 · 0 评论 -
【C++】你是怎么用内联函数(inline)的?
本篇文章将从什么是内联函数、内联函数和普通函数的区别、预处理宏的缺陷、内联函数的优缺点以及使用内联函数的一些技巧等方面进行介绍。希望读者读完该篇博客,能对内联函数(inline)有更深刻的理解。原创 2023-06-01 13:39:05 · 1753 阅读 · 0 评论 -
【C++ 】关于引用(reference)的代码案例
引用的本质是一个指针常量。它在编译时被解析为一个指针,但在程序运行时它的行为类似于对被引用变量的直接访问。引用所占的内存空间和被引用的变量相同,但是引用不是一个独立的变量,它只是被引用变量的一个别名,因此没有自己的地址。在编译器生成的汇编代码中,引用的使用被转换为取地址、间接引用等指针操作。在C++中,引用是一种非常方便的机制,可以使代码更加简洁易读,同时也能够避免指针所带来的一些问题,如越界、空指针等。原创 2023-05-29 17:01:22 · 1272 阅读 · 0 评论 -
【C++】 全局变量(Global Variable)存在的一些潜在问题
C++中的全局变量可能会带来一些潜在的问题。为了解决这些问题,我们可以使用一些增强检测方法,例如将全局变量定义在命名空间中,使用常量代替不变的全局变量,使用局部变量代替全局变量,使用封装机制和使用单例模式。原创 2023-06-01 10:13:16 · 5560 阅读 · 0 评论 -
【C++】 作用域(::)和命名空间(namespace)使用的注意事项
通过合理使用作用域和命名空间,可以提高程序的可读性、可维护性和性能。在编写程序时,我们应该根据程序的规模、复杂度、可读性和可维护性等方面综合考虑,合理使用作用域和命名空间,并尽量做出相应的优化策略,以提高程序的性能。原创 2023-05-31 16:11:55 · 1829 阅读 · 0 评论 -
【C++】【类型转换】都在这了(肝货一万字!!!)
本篇文章详细讲解了C++中各种类型转换的使用方法和注意事项。隐式类型转换由编译器自动执行,通常发生在算术计算或需要分配空间的情况下;显式类型转化由开发者手动执行,包括四种强制类型转换方式:static_cast、dynamic_cast、const_cast和reinterpret_cast。除了四种强制类型转换方式外,C++标准库中还提供了多种类型操作类模板,这些模板可以用于实现类型转换和其他一些类型操作的功能。在进行类型转换时,可能会出现一些潜在的问题,包括数据精原创 2023-06-01 23:45:00 · 530 阅读 · 0 评论 -
【C/C++】编程技巧总结(提高代码质量)
C/C++是一种广泛使用的编程语言,在计算机科学和工程领域具有广泛的应用。C/C++具有高效性、灵活性、可移植性等优点,但其编程难度较大,需要程序员掌握一些优化技巧,以提高程序的性能和稳定性。本篇介绍了一些常用的C/C++编程技巧,包括数据类型、数组和指针、函数、内存管理以及代码调试和测试等方面。原创 2023-05-29 11:23:44 · 835 阅读 · 0 评论 -
【C++】类中静态(static)成员变量、静态(static)成员函数和静态常量(static const)的应用
本文介绍了C++中静态成员变量、静态常量和静态成员函数的特性、应用、常见的软件设计模式以及单例模式、工厂模式的实现。静态成员变量、静态常量和静态成员函数可以帮助我们更好地组织数据和操作,并提高代码的效率和可读性。原创 2023-06-02 11:04:41 · 10483 阅读 · 5 评论 -
【C语言】gcc编译C语言程序的4个步骤
gcc编译C语言程序的4个步骤:预处理:gcc -E hello.c -o hello.i编 译:gcc -S hello.i -o hello.s汇 编:gcc -c hello.s -o hello.o链 接:gcc hello.o -o hello一步编译:gcc hello.c -o demo(其实内部还有:预处理、编译、汇编、链接的过程)原创 2023-03-20 13:54:48 · 2441 阅读 · 0 评论 -
【C语言】实现两个数据交换(三种方式)
在本次测试中,方式1所占空间比其他两种方式多出量不大,时间效率上是最快的,考虑到现在内存一般比较充足,建议用方式1(通过设置第三方变量)来执行两个数据的交换。程序会在空间占用和时间效率两者之间左右摇摆,一般要想获得更高的时间效率,就需要牺牲更多的空间;方式1代码量多一条int类型定义中间容器,会开辟一块4字节的内存空间。我这里采用vs2022测试三种方式用时(附案例代码)方式1>方式2=方式3(空间占用大小)方式2>方式3>方式1(运行时间)方式2与方式3占用空间相同。原创 2023-03-11 09:49:16 · 16972 阅读 · 0 评论 -
【C语言】volatile的作用
volatile的作用是很微妙的,它并不能替代synchronized,因此它无法提供同步的能力,它只能提供改变可见性的能力 (可见性:多个线程访问同一个变量时,这个变量被修改后,能被其他的线程看到。由于总是读写与主存,它的读写性能要低于普通的变量。正确使用的模式总结下来就是一个线程写,多个线程读。转载 2023-03-13 16:11:20 · 1785 阅读 · 4 评论 -
【C语言】16、32和64位编译器环境下(char、short、int、long、longlong、float、double和指针)占用多少字节
常用的32位操作系统和64位操作系统对比:除了 * 与long随操作系统子长变化而变化外,其他的都固定不变:bool 1个字节 、char 1个字节、 int 4个字节、float 4个字节 、doubl 8个字节、long long 8个字节。原创 2023-03-16 21:03:37 · 2613 阅读 · 0 评论 -
【C语言】运算符大全(附运算符优先级表)
运算符虽然不少,而且还有优先级之分,但是多练习熟悉就好了,实践出真知!附录:运算符优先级表优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[长度]从左往右()小括号(表达式)或函数名(形参表)取成员结构体名.成员->指针结构体指针->成员2负号运算符-表达式从右往左单目运算符()强制类型转换(数据类型)表达式++自增运算符++变量或变量++单目运算符--自减运算符--变量或变量--单目运算符取内容*指针变量单目运算符取地址。原创 2023-03-10 23:23:21 · 5733 阅读 · 0 评论 -
【C语言】printf的计算参数是从右往左压栈的
从汇编角度来看,函数的参数总是从高地址压到低地址,而访问参数的时候又是通过基址加偏移量来的,所以按照逻辑,偏移量为0对应第一个参数,第一个参数在低地址,低地址最后压入栈,相对应的函数最右边的参数也就最先计算,并先压入栈。 由于栈是后进先出所以读取参数时是从左到右。原创 2023-03-15 20:46:39 · 1453 阅读 · 0 评论 -
【C语言】主函数main的参数
一、main函数的三种形式1.无返回值,无参数形式(注意有些编译器通不过该方式)2.有返回值,无参数形式3.有返回值,有参数形式二、说一说argc和argv,envp参数1.argc是一个int类型变量,存储的是主函数的参数个数2.argv[]是一个字符指针数组,其中存储的是主函数的参数字符串,是一个参数列表3.envp[]是一个字符指针数组,存放了当前程序运行环境的参数原创 2023-03-17 21:05:58 · 631 阅读 · 0 评论 -
【C语言】auto、extern、static、register整理
32位操作系统虚拟内存是4G,分为系统占用空间和局部变量占用空间(栈区),动态划分空间(堆区),全局变量/静态局部变量占用空间(全局/静态存储区),字符串/数字常量占用空间(文字常量区)和程序代码占用空间(代码区)。原创 2023-03-09 18:02:50 · 201 阅读 · 0 评论 -
【C语言 】移位运算的妙用整理
奇数存储在计算机中的补码最低位一定是1,而偶数存储在计算机中的补码最低位一定是0,与1按位与运算即可得到0或1。位移运算从执行上看效率要更高一些,但是考虑到具体的项目开发和其他环境问题,要结合具体情况进行比较。>> 右移:算术右移,右边丢弃,左边补原来的符号位;对于两个整数x,y,如果用 (x+y)/2 求平均值,有可能。|:按位或,按位或|,1或1为1,1或0为1,0或0为0。&:按位与,按位与&,1与1为1,1与0,0与0均为0。^:异或,相同为0,相异为1。~:按位取反,0转1,1转0。原创 2023-03-08 23:15:14 · 1969 阅读 · 0 评论 -
【C语言】小数的存储方式
32位的浮点数:最高的一位是符号位s,接着的8位是指数E,剩下的23位为有效数字M64位的浮点数:最高的一位是符号位S,接着的11位是指数E,剩下的52位为有效数组M一个浮点数在计算机里是运用"科学计数法"的方式来表示的~用2的多少次方来表示,2^E (2的E次方)E越大,能表示的数据范围就越大,M越大,能表示的数据的精度就越高,所以一般在使用小数时建议double类型存储。原创 2023-03-08 18:51:32 · 1729 阅读 · 0 评论 -
【C语言】数据存储超限之有趣的圆,存储规律(char为例)
一、计算机中存储的是补码(至于为什么不是原码或补码,大家也可以自己假设计算机中存储的是原码或补码来推演一下证明或是参考其他材料),当然计算也是补码形式进行的。二、以char类型为例(其他数类型具备同样的性质,只是位数不同而已),char占1字节,8位,值范围-128—127。这里先补充一下,原码、反码、补码的换算知识。原创 2023-03-06 12:05:09 · 157 阅读 · 0 评论 -
【C语言】定义二维数组时为什么必须要带上列参数
根据本篇博客三部分的讲解不难看出,编程语言的设计离不开硬件性能的支持,同时巧妙的编程设计也是优化硬件性能的重要手段。作为程序设计者,不单单要提高编程技巧,对计算机相关硬件的了解也是必备的(从本篇博客常见的数组可见一般)。原创 2023-03-04 01:29:29 · 825 阅读 · 0 评论 -
【C/C++】C语言&C++标准版本+不同版本的新特性(C89/90、C95、C99、C11、C17;C++98、C++03、C++11、C++14、C++17、C++20)(截止到2023年)
C语言:C89/90、C95、C99、C11、C17;C++:C++98、C++03、C++11、C++14、C++17、C++20;列出每个版本的一些主要特性。原创 2022-07-04 01:11:00 · 15362 阅读 · 2 评论