C语言教程
文章平均质量分 77
爱编程的鱼
“某一刻发现屋里有腐烂的臭味 寻着味道找去 原来是枕头里藏了发霉的梦和我腐烂的理想 摸索着床底下发现了一具尸体 原来是年少的自己”
展开
-
编程语言越来越多,为什么C/C++还没有被现在的时代淘汰呢?
近年来,随着人工智能、大数据等领域的兴起,各种新兴编程语言层出不穷,例如Python、Go等,它们以更简洁的语法、更丰富的库以及更友好的开发体验,吸引了大量开发者。在这样的背景下,不少人开始质疑C/C++这类“老牌”语言的未来,认为它们终将被时代淘汰。然而,C/C++ 真的会消失吗?答案或许是否定的。与其说 C/C++ 会被淘汰,不如说它们在某些领域具有独特的不可替代性,这种不可替代性决定了它们在未来相当长一段时间内依然会占据重要地位。C/C++的不可替代性源于其对底层硬件和实现细节的精细控制能力。原创 2024-11-06 16:44:34 · 514 阅读 · 0 评论 -
深入解析:C语言的四套标准(C89、C99、C11、C17)
C语言的四套标准(C89、C99、C11和C17)代表了C语言的演进和改进过程。每个标准引入了新特性和改进,为程序员提供了更强大和灵活的编程工具。通过具体实例的说明,我们深入探讨了每个标准的特点和新特性,帮助你了解C语言的不同版本,并为你在实际编程中选择合适的标准提供了指导。原创 2024-10-26 15:14:18 · 785 阅读 · 0 评论 -
C++头文件大全及解释(补丁)
这些头文件只是 C++ 众多头文件中的一部分,每个头文件都提供了特定的功能和工具,程序员可以根据需要选择合适的头文件来实现各种功能。向量可以根据需要自动调整大小,提供了方便的操作方法,如添加元素、删除元素、访问元素等。这个头文件提供了一些通用的工具函数,包括随机数生成、内存分配和转换函数等。这个头文件包含了各种算法,如排序、查找、遍历等。可以方便地进行字符串的拼接、查找、替换等操作。用于处理 C 风格的字符串操作,如字符串复制、比较、拼接等。提供了数学函数,如平方根、三角函数、指数函数等。原创 2024-10-20 14:29:57 · 559 阅读 · 0 评论 -
C++教程一口气讲完!(万字讲解)( ̄y▽ ̄)╭ Ohohoho... 下
使用#define预处理器。使用const关键字。C++ 中的函数定义的一般形式如下:在 C++ 中,函数由一个函数头和一个函数主体组成。一个函数可以返回一个值。是函数返回的值的数据类型。有些函数执行所需的操作而不返回值,在这种情况下,return_type 是关键字void。这是函数的实际名称。函数名和参数列表一起构成了函数签名。参数就像是占位符。当函数被调用时,您向参数传递一个值,这个值被称为实际参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可能不包含参数。原创 2024-10-05 13:32:59 · 1023 阅读 · 0 评论 -
C++教程一口气讲完!(万字讲解)♪(´▽`)上
变量定义就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储。变量定义指定一个数据类型,并包含了该类型的一个或多个变量的列表,如下所示:在这里,type必须是一个有效的 C++ 数据类型,可以是 char、w_char、int、float、double、bool 或任何用户自定义的对象,可以由一个或多个标识符名称组成,多个标识符之间用逗号分隔。char c, ch;double d;行声明并定义了变量 i、j 和 k,这指示编译器创建类型为 int 的名为 i、j、k 的变量。原创 2024-10-04 18:55:47 · 1252 阅读 · 0 评论 -
c++用什么软件编程?都有哪些?
C++ 作为一种高效、面向对象的编程语言,广泛应用于软件开发、游戏开发、嵌入式系统等领域。那么在进行 C++ 编程时,我们通常会使用哪些软件呢?下面就来具体分析。原创 2024-06-29 20:40:00 · 9941 阅读 · 1 评论 -
C语言编程十大面试题及答案
答案:变量/函数的声明仅声明变量/函数存在于程序中的某个位置,但未为其分配内存。在声明函数的情况下,程序会知道该函数的参数是什么,它们的数据类型,参数的顺序以及函数的返回类型。关于定义,当我们定义变量/函数时,除了声明的作用外,它还为该变量/函数分配内存。答案:在C语言中,默认情况下函数是全局的。与C中的全局函数不同,对静态函数的访问仅限于声明它们的文件。当删除或释放对象时,如果不修改指针的值,就会出现悬空指针,因此指针仍然指向释放后的内存的存储位置。答案:变量的范围是程序的一部分,可以直接访问该变量。原创 2024-06-27 20:16:02 · 627 阅读 · 1 评论 -
最流行的后端框架:如何选择适合自己的框架
在当今快节奏的数字环境中,软件开发需要高效、可扩展且可靠的解决方案。最流行的后端框架,这就是后端框架的用武之地。这些软件框架提供了构建 Web 应用程序的骨干,处理了从数据库交互到安全的一切事务。随着开发人员面临着越来越大的压力,要求他们快速交付高质量的应用程序,选择合适的框架可能是一项艰巨的任务。所以本次文章深入探讨了当今最流行的一些后端框架的世界,突出了它们的优缺点,以帮助您做出明智的决定。正在上传…重新上传取消。原创 2024-06-13 21:13:39 · 770 阅读 · 1 评论 -
编程都该学什么语言?几个流行编程语言对比
但是C#与Java又有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,并且它是微软公司 .NET windows网络框架的主角。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。这个是得结合自己的实际情况和预期的工作,不要盲目的学习,在学习的过程中要注重实践,同时学习一些数据结构、算法方面的知识点,这样才能让你所学的编程语言发挥它所具有的最大潜力。原创 2024-06-09 14:25:39 · 824 阅读 · 1 评论 -
C语言中的 ?: :三元运算符详解
在C语言的编程世界中,三元运算符如同一位技艺精湛的工匠,以其独特的魅力为代码增添了一份优雅与高效。合理地使用三元运算符,可以使代码更加简洁易读,提高代码质量。但同时也要注意避免滥用,保持代码的清晰易懂,才能真正发挥其优势,让代码如同艺术品般赏心悦目。原创 2024-05-25 07:42:59 · 4729 阅读 · 1 评论 -
Unity3D插件开发教程(一):自定义锚点组件
EditorHandlesMenuItemSelection使用Handles类在Scene视图绘制一个正方体整个插件的结构:首先我们在目录下创建一个代码(注意命名空间可能会报错,可以修改一下命名空间)。就是我们要实现的锚点组件了。它只有简单几个属性用于记录锚点的参数。所以在运行时并不会对效率产生多大的影响。/// 线框颜色/// 是否使用全局缩放/// 是否使用Handles标准尺寸以上的属性待会在使用到的时候会一一给予介绍。然后我们在AnchorComponent/Editor。原创 2024-05-18 18:11:11 · 1280 阅读 · 1 评论 -
C语言:double类型,处理小数的利器
double是 C语言中用来存储双精度浮点数的一种重要数据类型,它可以帮助你处理带有小数点的数字。学习使用double是学习 C语言的重要一步,它将帮助你完成更多复杂的计算任务。希望这篇文章能够帮助你理解double的基本概念,并开始在你的 C语言程序中使用它!原创 2024-05-17 18:31:56 · 667 阅读 · 1 评论 -
为何大学计算机专业以C语言入门?探究C语言入门的好处
C语言作为大学计算机专业的入门语言,以其简洁的语法、接近底层的特性、跨平台性和广泛应用性而受到青睐。学习C语言能够培养学生的基础编程能力,提高算法和数据结构理解,增强调试和优化技能,并为学习其他编程语言打下坚实基础。原创 2024-05-07 18:55:45 · 438 阅读 · 1 评论 -
C语言:初学者和专家的分水岭
C语言作为菜鸟和大神之间的分水岭,对于初学者来说,它是一个全新的世界,关注于基本语法和功能的实现。对于专家级开发者来说,C语言则是他们深入研究和实现复杂算法和数据结构的基础。通过不断学习和实践,初学者可以逐渐成长为专家,掌握C语言开发的高级技巧和应用。无论是初学者还是专家,C语言都提供了丰富的学习和创造的机会,让你在编程世界中不断进步。原创 2024-05-07 18:52:22 · 403 阅读 · 2 评论 -
C语言在线编译器:无需安装,轻松编写C语言程序
当今,C语言是一种非常流行的编程语言,被广泛用于系统开发、游戏开发等领域。为了方便学习和实践C语言,许多在线编译器应运而生,其中有些还提供了额外的功能,如调试和代码分享。在本文中,我们将介绍一些常用的C语言在线编译器,并结合具体示例演示其用法。原创 2024-03-27 20:58:18 · 3073 阅读 · 1 评论 -
C++中的多值返回:解锁函数返回值的神奇力量
通过引用、指针、结构体和标准库中的tuple,C++提供了多种方式来实现多值返回的需求。选择合适的方法取决于具体的场景和需求。理解这些方法的优势和适用性可以使我们编写更灵活、可维护的代码,并满足多值返回的需求。在日常的C++编程中,我们可以根据具体情况选择最适合的方法,并根据需要灵活地使用这些技巧。原创 2024-03-15 21:57:03 · 584 阅读 · 1 评论 -
基础算法-高精度除法
压位的话,需要格式化输出,最高位直接输出即可,其他位都需要输出4位数字,不足的前面补零。容器类型用 begin() 和 end() 来指定反转的区域,数组类型用int类型。短整型 short int 2 (-2的15次方)~(2的15次方-1)长整型 long long 8 (-2的63次方)~(2的63次方-1)整型 int 4 (-2的31次方)~(2的31次方-1)C++ 每一个变量都有自己的类型,每个类型都有自己的存储长度范围。原创 2024-03-09 17:19:40 · 523 阅读 · 1 评论 -
你好,C++(18) 到底要不要买这个西瓜?4.1.6 操作符之间的优先顺序
在表达一些比较复杂的条件判断时,在同一个表达式中,有时可能会存在多个操作符。比如,我们在判断要不要买某个西瓜时,不仅要 判断它的总价(单价8.2元/斤,一共10.3斤)是否小于100块钱(因为兜里只有这么多钱),同时还要判断这个西瓜是否有坏掉的地方。要表达这个复杂 的条件判断,我们不得不把前面学过的算术操作符、关系操作符和逻辑操作符全都派上场:在“fPrice * fWeight < 100 &&!bBad”这个表达式中,有算术操作符“*”,有关系操作符“原创 2024-03-02 09:39:20 · 1338 阅读 · 1 评论 -
C++标准库与Boost库:功能丰富的开发工具集
C++标准库和Boost库是C++开发者的得力工具,为我们提供了广泛的功能和组件,用于解决各种问题和应对不同的编程需求。C++标准库提供了基本的功能和容器类,而Boost库则进一步扩展了C++的功能,提供了更多的工具和组件。通过熟练掌握和灵活运用这些库,我们能够更加高效地开发C++应用程序,并提高代码的质量和可维护性。原创 2024-02-23 20:59:31 · 971 阅读 · 1 评论 -
C++中的volatile:穿越编译器的屏障
volatile关键字在C++中用于修饰变量,用于告知编译器该变量的值可能会在意料之外的情况下被修改。它主要用于禁止编译器优化、与硬件交互以及多线程环境下的数据共享。然而,使用volatile关键字并不能解决所有的多线程问题,需要结合其他线程同步机制来确保线程安全。在C++11及更高版本中,推荐使用std::atomic模板类来进行原子操作和线程安全编程。原创 2024-02-16 19:45:23 · 1114 阅读 · 1 评论 -
你好,C++(15)0.1*10不等于1.0——4.1.4 关系操作符4.1.5 逻辑操作符
在这个条件判断中,我们用“&&”操作符对“nChs >= 60”和“nMath >= 60”进行“与”运算,如果nChs的值小于60,也就是第一个条件表达式“nChs >= 60”的值为false时,无论后面的“nMath >= 60”表达式的值为true或者false,我们都已经能够确定整个表达式的值为false,C++将用false作为整个表达式的值,跳过对后面“nMath >= 60” 的判断而直接结束对整个表达式的计算。例如,上面的代码可以修改为下面的样子,以保证代码行为的一致。原创 2024-02-15 18:01:51 · 1306 阅读 · 1 评论 -
你好,C++(14)用表达式表达我们的设计意图——4.1 用操作符对数据进行运算
操作数就是要参与运算的数据,它可以是变量表示的数据,也可以是直接表示的常数。比如,一个加法运算表达式“a + 5”中,变量“a”和常数“5”是这个表达式的操作数,而连接这两个操作数的是加法运算操作符“+”,表示将它所连接的两个操作数“a”和“5”进行加和运算得到结果。这些复合的赋值操作符同样是二元操作符,它们首先将两侧的操作数按照复合操作符中的算术或位运算操作符进行计算,这时参与计算的是变量的当前值,得到计算结果后再赋值给左侧的操作数,从而在计算的同时完成了赋值,实现了计算和赋值的复合。原创 2024-02-15 18:00:20 · 975 阅读 · 1 评论 -
你好,C++(13)四两拨千斤——3.9 指向内存位置的指针
指针,作为一种表示内存地址的特殊变量,其定义的形式也有一定的特殊性:数据类型* 变量名;其中,我们用指针所表示地址上的数据类型来作为定义指针变量时用的数据类型。比如,我们要定义一个指针来表示某个int类型数 据的地址,那么指针定义中的数据类型就是int。这个数据类型是由指针所指向的数据来决定的,可以是int、string和double等基本数据类型, 也可以是自定义的结构体等复杂数据类型。简而言之,指针指向的数据是什么类型,就用这种类型作为指针变量定义时的数据类型。原创 2024-02-13 20:24:42 · 835 阅读 · 1 评论 -
你好,C++(12)如何管理多个类型相同性质相同的数据?3.6 数组
学过前面的基本数据类型之后,我们现在可以定义单个变量来表示单个的数据。例如,我们可以用int类型定义变量来表示公交车的 216路;可以用float类型定义变量来表示西红柿3.5元一斤。但是,除了单个孤立的数据之外,现实世界中还有一类批量数据。例如,一个公司所有员工 的工资,这些数据的数据类型相同(都是int类型),性质相同(都表示员工的工资),数量很多(成千上万员工的工资),并且往往形成一个有意义的数据集合 (员工工资)。针对这类的批量数据,单独地定义一个一个的变量来表示显然是行不通的。原创 2024-02-12 17:08:25 · 1067 阅读 · 1 评论 -
你好,C++(11)如何用string数据类型表示一串文字?根据初始值自动推断数据类型的auto关键字(C++ 11)
但是,这种方式好是好,却有一个缺点, 那就是每次推断得到的数据类型只能在定义变量的时候使用一次,无法保留下来继续使用。通常在定义变量时,如果我们很难准确地推断它的数据类型,或者是这个变量的数据类型难于书写,就可以使用auto作为变量的数据类型来定义变量,而 真正的数据类型就交由编译器去根据变量的初始值推断得到好了。string类型不仅包装了字符数组,可以存储字符串中的各个字符,同时还提供了很多跟字符串相关的操作,例如,可以获得一个字符串的长度,或者在字符串中查找某个字符等等,极大地方便了对字符串的处理。原创 2024-02-11 16:50:58 · 1082 阅读 · 1 评论 -
基础算法-高精度减法
在数据处理当中,我们会常使用减法运算,例如:当有一个数123456789时,可以使用数组对其每一位进行存储,那么数组第 0 存储数的个位 9 ,便于我们借位操作,在高位上补充数字。高精度减法即模拟减法运算,从个位算起,得出差判断是否大于 0 ,若大于等于 0 则直接减去即可,若小于 0 ,则需进行借位操作,上一位 -1。在实现过程中,需要使用三个数组进行存储,两个对减数和被减数存储,一个对差存储,最后对存储和的数组进行变换操作或者反向输出即得高精度减法结果。计算过程:不压位的话,除数和模数都是10;原创 2024-02-10 10:07:15 · 458 阅读 · 1 评论 -
基础算法-高精度加法
为什么要使用高精度算法C++ 每一个变量都有自己的类型,每个类型都有自己的存储长度范围。名称 关键字 字节 长度短整型 short int 2 (-2的15次方)~(2的15次方-1)整型 int 4 (-2的31次方)~(2的31次方-1)长整型 long long 8 (-2的63次方)~(2的63次方-1)原创 2024-02-10 10:04:35 · 523 阅读 · 1 评论 -
通俗易懂:快速排序算法全解析
快速排序是一种高效的分治排序算法,通过选择基准元素和不断划分子数组来实现排序。它具有优秀的性能和广泛的应用场景,特别适合处理大规模数据集。了解快速排序的原理和步骤,以及掌握优化策略,可以帮助开发人员选择合适的算法,并编写出高效的排序代码。原创 2024-02-08 17:41:04 · 871 阅读 · 1 评论 -
C++移动语义:提升性能和资源管理的新境界
移动语义是现代C++编程中的重要特性,它通过避免不必要的数据复制和资源浪费,提高了程序的性能和资源管理效率。通过使用移动构造函数和右值引用,我们可以将资源的所有权从一个对象转移到另一个对象,而无需进行数据复制。在适当的场景下,合理地利用移动语义可以优化内存管理、容器操作和大型对象传递等关键方面。然而,在实现和使用移动语义时,需要注意正确的实现和使用方式,以避免潜在的错误和资源泄漏。原创 2024-01-31 14:48:09 · 1255 阅读 · 1 评论 -
你好,C++(10)这次的C++考试你过了没有?C++中表示逻辑判断的布尔数据类型
面对现实世界中的各种数值数据(比如,表示公交车路线的 216路,表示西红柿价格的3.5元一斤),我们可以用之前所介绍的数值数据类型定义变量(int nNo,float fPrice)来抽象和表达。为了弥补char类型的不足,C++提供了另外一种字符数据类型wchar_t,它 占用2个字节的内存空间,取值范围更广,因而可以表示更大范围的字符,当然也包括中文字符了。在其后的if条件结构中,bPass又被用作了条件判断的依据,如果bPass的值为true,则输出考试通过的提示,否则,就输出考试未通过的提示。原创 2024-01-28 08:45:34 · 871 阅读 · 1 评论 -
你好,C++(9)坐216路公交车去买3.5元一斤的西红柿——C++中如何表达各种数值数据 3.3 数值数据类型
在这段程序中,我们首先引入了C++标准库中关于随机数的头文件,然后,我们就可以定义相应的随机数引擎对象 (reng)和分布对象(uni_dist),在定义分布对象的同时,我们以构造函数参数的形式,确定了随机数的取值范围。有时候,我们需要表达的整数只是在一个比较小的范围内,比如,我们要表达一个学生的成绩,最小可以到0,而最大也只能到 100,如果这时仍旧使用int这种取值范围比较大的数据类型来表示,就显得有点资源浪费了。各种无符号类型所占用的内存空间与相应的有符号类型占用的内存空间是相同的。原创 2024-01-27 14:43:12 · 947 阅读 · 1 评论 -
基础算法-浮点二分
返回值:返回幂指数的结果,即 x 的 y 次幂。若 x 为负数且 y 为 小数,或者 x 为 0 且 y 小于等于 0 ,将出现结果错误。引用头文件 #include,常用cout原创 2024-01-26 15:42:56 · 428 阅读 · 1 评论 -
你好,C++(8)如何表达那些始终保持不变的数据量?3.2.2 常量
但是第二种方式要比第一种方式好,因为如果使用#define将这个常数定义成宏 PI,PI会在代码的预编译阶段被预编译处理器替换成3.14159这个常数本身,这样就没有了编译器的数据类型检查, 并且,宏的名称不会出现在符号表中,这样会给代码后期的调试带来麻烦,可能会遇到一个数字,却不知道它从何而来,这就是我们常说的Magic Number(像拥有魔力一样不知从何而来的数字)。当我们需要在字符串中频繁地表示各种特殊符号(反斜杠,引号等)的时候,原生字符串将非常简便,而这一点点书写上的冗长也是值得的。原创 2024-01-25 13:42:55 · 1340 阅读 · 1 评论 -
你好,C++(7)第三部分 C++世界众生相 3.2.1 变量的定义与初始化
为了保存数据,我们首先需要为它开辟合适的内存空间。同时,对于程序中的变量而言,我们往往需要对其进行多次读写访问。为了 便于访问变量,我们往往需要给变量一个名字,然后通过变量名访问它所代表的数据。数据类型说明符 变量名;// 同时定义相同类型的多个变量// 不推荐的形式 ,多个变量容易让人混淆,代码缺乏可读性数据类型说明符 变量名1,变量名2,变量名n;变量定义由数据类型说明符和变量名两部分构成。原创 2024-01-24 08:42:49 · 1049 阅读 · 1 评论 -
你好,C++(6)2.3 C++兵器谱
在Windows平台上,有众多的图形化的集成开发环境,除了我们前面所介绍的最常用的Visual Studio之外,还有支持跨平台的Eclipse CDT和Code::Blocks,更有小巧的Dev-C++等。更重要的,这些问题的答案都是 来自于世界各地的技术高超经验丰富的程序员,并经过用户的投票排序,所以答案的质量特别高。)就是一本C++词典。实际上,在Linux /UNIX平台上,因为缺少图形化的集成开发工具的支持,C++程序的创建基本上都是用GCC编译器,再配合其他编辑调试工具,以手工的方式完成的。原创 2024-01-23 10:47:02 · 986 阅读 · 1 评论 -
你好,C++(5)如何输出数据到屏幕、从屏幕输入数据与读写文件?
这里所谓的转义字符, 就是在某些字符前加上“\”符号构成的特殊字符,这些字符不再表达它原本的含义,转而表达的是对格式的控制或其他特殊意义,所以被称为转义字符。同样,为了将数据写入文件,需要创建一个输出文件流ofstream的对象fout,同时通过它的构造函数或open()函数 来打开一个文件,将这个文件和fout对象关联起来,然后通过插入符“原创 2024-01-22 12:45:05 · 1055 阅读 · 1 评论 -
基础算法-整数二分
当 mid=l+r>>1 时,查找值指向箭头1位置,检查 mid 是否满足蓝色部分性质,如果成立的话,mid 便在蓝色区域当中,此时,查找值便在区域 [l,mid] 里面,这里要注意包含边界,因为我们的查找值可能就是边界,此时更新边界的方法为 r=mid。当 mid=l+r+1>>1 时,查找值指向箭头2位置,检查 mid 是否满足红色部分性质,如果成立的话,mid 便在红色区域当中,此时,查找值便在区域 [mid,r] 里面,此时更新边界的方法为 l=mid。单调性与二分法并没有直接关系。原创 2024-01-20 15:12:44 · 1043 阅读 · 1 评论 -
你好,C++(4)2.1.3 我的父亲母亲:编译器和链接器 2.1.4 C++程序执行背后的故事
源文件HelloWorld.cpp经过我爸编译器 的编译后,得到的还只是一个无法直接执行的目标文件HelloWorld.obj,还需要我妈链接器将这个目标文件和Visual C++所提供的标准库目标文件(比如,libcpmt.lib)整合成最终的可执行文件(从标准库目标文件中查找程序目标文件所用到的外部函数等符号,然 后填写到程序目标文件以生成最终的可执行文件),这一过程就被称之为链接。但是,作为程序执行的调度者,它并不负责程序的执行,具体的执行工作,则是由它所创建的线程来完成的。数据和算法伴随我的一生。原创 2024-01-20 15:06:14 · 912 阅读 · 1 评论 -
深入C++继承:面向对象编程的核心概念
C++中的继承是面向对象编程的核心概念之一,它提供了代码重用、功能扩展、多态性和系统组织等诸多优势。通过继承,我们可以构建出具有层次结构的类,实现代码的重用和扩展,并使得系统更加灵活和可维护。然而,在使用继承时需要谨慎,遵循良好的设计原则,以避免继承滥用和导致代码复杂性的增加。通过深入理解C++继承的原理、语法和应用场景,我们可以更好地应用继承这一强大的工具,提高代码的可维护性和可扩展性,从而构建出高质量的C++应用程序。原创 2024-01-07 17:01:04 · 489 阅读 · 0 评论 -
Python、C++冒泡排序
OK,今天就到这了。原创 2024-01-03 17:45:43 · 527 阅读 · 1 评论