自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 收藏
  • 关注

原创 C语言必学的12个排序算法:冒泡排序(第4篇)

基本思想冒泡排序(Bubble Sort),是一类“交换”类排序方法,类似水中冒泡,最大的数据会沉到水底,较小的数会浮上来。很简单,以从小到大排序为例,每一趟排序将“逆序”(前一个元素比后一个元素大)相邻两个数据元素交换,这样就会将最大的元素交换到“最后”的位置,冒泡排序每趟子排序过程都会将当前“最大”元素交换到最后位置,较小的元素会渐渐排到前面。冒泡排序时间复杂度是O(n^2),是稳定的排序,当初始序列为从小到大有序时,仅需要进行n-1次关键字比较,不需要移动任何记录,即可完成排序过程;当初始序列从大

2020-07-31 21:54:53 302

原创 C语言必学的12个排序算法:希尔排序(第3篇)

基本思想希尔排序(Shell’s Sort),以发明人命名,又称为缩小增量排序,也是一种插入排序算法。主要思想:直接插入排序算法时间和待排数据有关,其平均复杂度是O(n^2),但是在待排数据已经有序的情况下,其复杂度可以达到O(n),因为不需要移动数据。希尔排序就是利用这种特点,先将整个待排数据记录分割成若干个子待排数据记录,然后分别进行直接插入排序,当整个待排数据记录“基本有序”时,再对整个数据记录进行完整的一次直接插入排序。通俗地来说,先“跳着”给待排序列排序几个数据,让待排数据基本有序的情况,再

2020-07-31 21:50:47 343

原创 C语言必学的12个排序算法:折半插入排序(第2篇)

基本思想直接插入排序实现简单,但是对于待排数据量较大时,时间性能差,因此可以对其改进。改进排序算法性能,无外乎从减少“比较”和“移动”操作次数,折半插入排序是其中一种改进,插入排序需要在有序子表查找合适的位置,此时可以使用折半查找的方式实现,减少比较次数。折半查找,举例来说明:对于9个数据的有序数据表:(1,2,3,4,6,7,8,9,10),给定一个数据5,如何查找合适的位置插入,保持数据表有序。1.首先有序表长折半9/2=4,可以和第4个数据4比较,发现5大,因此5的位置肯定在有序表后一半(6

2020-07-31 21:43:31 318

原创 C语言必学的12个排序算法:直接插入排序(第1篇)

为什么学习排序算法排序和查找是计算机专业课程数据结构和算法中最重要的部分之一,也是编程中常用的基础知识。C语言初学者对直接插入、简单选择两种最简单的排序算法必须掌握,足以应付一般的考试、课程设计、小程序编写。但是对于计算机专业、编程开发的同学,必须熟练掌握这12个算法,达到手写算法的程序,排序算法在算法能力训练、考研笔试和机试、工作面试、真实软件项目中普遍使用。C语言必须的12个排序算法文章系列,每篇文章介绍一个算法,使用C语言实现一个排序算法,这些代码可以作为模板代码,大家可以收藏,方便编程使用。

2020-07-31 21:37:06 599

原创 C++中是如何调用C接口的?

前言如何在C++代码中调用写好的C接口?你可能会奇怪,C++不是兼容C吗?直接调用不就可以了?这里我们先按下不表,先看看C++如何调用C代码接口。C++如何调用C接口为什么会有这样的情况呢?想象一下,有些接口是用C实现的,并提供了库,那么C++中该如何使用呢?我们先不做任何区别对待,看看普通情况下会发生什么意想不到的事情。首先提供一个C接口://来源:公众号【C语言PLUS】//test.c#include"test.h"void testCfun(){ printf("I am

2020-07-31 21:28:22 593

原创 轻松学做C语言课程设计:学生成绩管理系统-链表实现

题外话C语言课程设计,对于初学者来说,主要是综合运用C语言基础知识,以实际项目的形式锻炼编程能力。从今天开始,一起轻松学做C语言课程设计常见项目,建议先运行代码,再一步步理解其实现。备注:1.不同C编译器,对C语言程序编译有差别,建议大家选择相同的编译器。2.代码手机不方便看,可以收藏使用电脑查看,注意各种标点符号。功能要求学生成绩管理系统常用功能一般包括:1.学生信息包括学号、姓名、4门课成绩(语文、数学、英语、专业课),成绩百分制整数;2.学生信息以文件形式保存;3.可以显示所有学生信

2020-07-30 19:28:41 2676 2

原创 一篇文带你了解程序员的生存环境到底有多难!

世界上大部分软件公司都是面向业务开发模式而且长期不会变,也合理。因为存在这样的需求。业界不是学界,业界没有义务按照科研的机制来运作。业界的主要目的是满足企业个人的IT需求。科技企业最大的问题,是“面向业务的开发”很多企业业务最终面对的是个人用户,而且把精力和资源太多地放进了这些面向个人用户的业务中,即虚耗了企业运营的成本,也增加了企业潜在的风险。更健康的科技企业,应该是“面向解决问题的开发”,这里的问题,不仅仅是互联网的问题,不仅仅是民生问题,也包括了自然科学、共性基础科技难题、面向不同领域提供分析处

2020-07-30 16:44:27 769

原创 轻松学做C语言课程设计:图书管理系统-链表实现

题外话C语言课程设计,对于初学者来说,主要是综合运用C语言基础知识,以实际项目的形式锻炼编程能力。从今天开始,一起轻松学做C语言课程设计常见项目,建议先运行代码,再一步步理解其实现。题目要求图书管理系统提供图书信息管理以及借还管理。图书信息至少包括:图书编号、书名、价格、作者、借还状态,提供以下功能:1.增加图书信息,录入;2.查询已有的所有图书信息;3.删除图书;4.修改图书信息;5.借阅图书;6.归还图书;7.退出;实现要点该要求较为简单,可采

2020-07-29 16:36:06 941

原创 必须知道的C知识细节:常用的四种变量命名法

写C语言程序需要给函数、变量命名,也就是标识符,不同编程语言和不同程序,命名方式和规范各不相同,每种语言都有自己的习惯命名方法。截至目前,编程的命名方法主要有四种,这四种方法没有优劣之分,主要看个人爱好和编程规范要求,因此大家可以选择一种作为自己的风格。对于简单变量,可以使用单个字母或单个单词简写命名;对于复杂的变量和函数需要使用多个单词时,充分利用以下的命名法。变量命名其实对于计算机来说,可以是任意的,但是命名对于程序员来说,可以增加程序代码的可读性,因此十分重要。1.下划线命名法使用下划线分割多个

2020-07-29 16:09:51 2059

原创 轻松学做C语言课程设计:图书管理系统-数组实现

C语言课程设计,对于初学者来说,主要是综合运用C语言基础知识,以实际项目的形式锻炼编程能力。从今天开始,一起轻松学做C语言课程设计常见项目,建议先运行代码,再一步步理解其实现。题目要求图书管理系统提供图书信息管理以及借还管理。图书信息至少包括:图书编号、书名、价格、作者、借还状态,提供以下功能:1.增加图书信息,录入;2.查询已有的所有图书信息;3.删除图书;4.修改图书信息;5.借阅图书;6.归还图书;7.退出;实现要点该要求较为简单,可采用结构数

2020-07-28 21:06:08 3885

原创 必须知道的C语言知识细节:C程序编译后内存到底是如何布局

C语言程序编译以后,代码和数据都必须存放在内存中由CPU执行。理解C程序内存是如何划分布局,才能真正理解C语言中变量、存储类型、指针等底层知识点。一个C语言程序编译后,可执行文件中运行时内存空间按照以下规律进行连续划分布局。以下各区域内存地址按照从小地址到大地址空间排列。1.文本段也称为代码区,存放C程序编译的二进制指令代码,例如定义的各种函数体内的代码翻译成CPU指令后存放在该区域。2.数据段存放经过初始化的全局变量和静态变量的值。C语言中初始化的全局变量和静态变量内存分配在这个区段,初值也保存

2020-07-28 15:46:22 652

原创 必须知道的C语言知识细节:函数形参和实参的区别

当你选择了一种语言,意味着你还选择了一组技术、一个社区。——Joshua BlochC语言中函数形参和实参是十分重要的概念,初学者很容易混淆。形参:顾名思义,形式参数,仅仅是声明了参数的类型和参数名称,未实际分配内存和赋值。实参:实际参数,是指函数调用时,实际赋值和分配内存空间。例如:int sum(int a, int b){ return a+b;}int main(void){ int c=1; sum(c,2); return 0;}很明显,函

2020-07-28 15:34:48 6022

原创 容易忽略的C语言知识细节:你知道scanf函数格式控制%[]是什么输入类型吗?

C语言其实功能很强大,有不少细节的功能很有用。今天分享下C语言输入函数scanf函数中 %[] 格式控制符号的作用。C语言输入和输出函数使用格式占位符%作为格式控制,所谓的占位符就是在输入输出的内容中预留位置填充等待输入输出的内容,出现格式占位符%的地方表明有输入和输出。常见的格式控制有:%d 整数%f 单精度浮点数%lf 双精度浮点数%c 字符%p 指针值%s 字符串%u 无符号整数%% 百分号当然除了以上常用的,还有今天介绍的 %[]。%[] 格式控制类型,本质上也

2020-07-27 19:32:14 829

原创 你见过“最美”的C语言代码是什么?

我们都知道雷军雷布斯说过当时他写的代码像诗一样优美,那已经是三十年前的汇编时代了,那么现在你有见到过最美的c语言代码吗?我在网上收集了一些代码,供大家赏诗,其中我本人最喜欢最后一个。这是我找到最多的答案,估计是程序员想自黑还是说这个带大家步入了代码的世界。#include<stdio.h> int main(void) {   printf("Hello,World");   return

2020-07-27 16:54:15 2261

原创 必须知道的C语言知识细节:函数声明与定义的参数名称可以不一样吗?

函数声明和定义一般都有参数,C语言中函数声明关注的是函数返回值类型、函数名称、函数参数类型,其中函数参数名称并不关注,因此参数名称可以在声明时省略,在定义时取任意名称。注意:声明和定义是有区别的,具体可以参见前面文章。[必须知道的C语言知识细节:声明和定义]以下三种方式声明和定义函数都是正确的。第一种:常用的,声明和定义函数参数名称均一致。int add(int a, int b);   // 函数声明int add(int a, int b)    /

2020-07-25 21:40:04 9208 2

原创 必须知道的C语言知识细节:三类函数使用区别

C语言函数有三类,分为外部函数、静态函数、内联函数,其中前两种是C89标准支持,第三种是C99标准增加的。外部函数这类函数是默认的函数类型,基本上平时我们使用的就是这种函数,声明有以下两种方式,例如:// 使用extern关键字,显示声明extern int add(int a, int b);// 或省略关键字extern,编译器也会自动认为是externint add(int a, int b);外部函数表明在当前声明和定义的代码文件中可以使用,也可以在其它代码文件中可以通过#includ

2020-07-25 21:10:37 1089

原创 必须知道的C语言知识细节:函数参数传递方式只有值传递吗?

C语言函数是很重要的语法结构,函数将程序模块化,实现一个个独立的小功能。函数是由返回值类型、函数名、函数参数列表组成的,其中函数调用时,将实参传递给参数列表的形参,函数根据传递的实参值计算出结果返回,这里涉及传递函数参数的方式。形参 VS 实参形参(形式参数):很简单,函数声明和定义中的参数名称就是形参,例如:定义一个计算两个整数和的函数,其中参数名称a和b就是形参。int add(int a, int b){return a+b;}实参(实际参数):当需要实际调用时,传递给函数的具体参数值

2020-07-24 22:30:10 1241

原创 必须知道的C语言知识细节:什么是变量的地址

计算机中内存是按照字节编址的,也就是每个字节都有唯一的地址,例如32位计算机,内存地址空间是2的32次方,也就是4G字节空间,地址编号从0开始,范围是0到2^32-1。C语言是接近硬件的高级语言,提供运算符(&和*)以及指针直接操作内存地址。地址本质上也是一个无符号整数,C语言使用运算符 & 直接获取变量地址,运算符*用来定义指针变量和间接获取地址存放的值。输出有两种方式:1.使用格式控制符号 %p 输出地址十六进制格式。2.使用%lu输出地址无符号十进制整数表示。例如:int

2020-07-24 21:37:37 6002

原创 必须知道的C语言知识细节:=和==区别

今天有同学问我,C语言中的等号和数学中的等号区别。这个问题对初学者的确有一些迷惑,这里详细说明下。C语言中等号=表示赋值运算符,例如E1=E2,表示将E2的值存放到变量E1中,E1必须是可修改的左值,也就是变量。双等号是逻辑判断运算符,表示相等,例如E1E2,表示判断E1和E2的值是否相等,如果相等返回1,不相等返回0值。因此,双等号==才是数学中的等号,另外C语言中的不相等运算符号用 != 表示。注意两者不能混用,在if、while、for等语句中表示逻辑判断是,如果混用将导致程序运行结果不正确。

2020-07-24 19:10:06 6892

原创 v必须知道的C语言知识细节:注释三种使用方式区别

注释的作用是给代码做说明,方便别人阅读和理解代码,写注释是很好的编程习惯。编译器会直接忽略代码中的注释,注释不对程序功能产生任何影响,即使不写注释,也不影响程序代码。三种注释写法:1.单行注释,/* */之间的所有内容会被作为注释。/* 这是注释 */2.多行注释,/* */之间的多行内容会被作为注释。/*这是注释1。这是注释2。*/3.C99新增的一种单行注释,该风格借鉴C++注释风格。//符号表示的注释告诉编译器忽略 // 和换行符间的所有内容,单行注释不能跨行。// 这是单行注

2020-07-23 16:25:14 923

原创 必须知道的C语言知识细节:单引号和双引号正确用法

C语言中ACSII码字符单引号’和双引号"在程序中经常出现,很简单,但却是十分重要的语法标点符号,初学者容易混淆使用。单引号在字符常量时使用,表示单个字符。例如:char c;c = ‘a’;c = ‘1’;c = ‘A’;当在单引号中出现两个及以上字符时或没有字符时,编译出错。例如:char c = ‘aA’;  // 编译出错,单引号只能是一个字符char c = ‘’;    // 单引号中间没有任何字符时,编译出错双引号在表示字符串常量时使用,可以

2020-07-23 15:58:51 20314 2

原创 必须知道的C语言知识细节:sizeof是关键字还是运算符?

很明显,sizeof是C语言的语法关键字,不是运算符。运算符是有优先级和结合性的,具体可以参见前面全面介绍运算符的文章。[C语言表达式和运算符][C语言运算符表(完整)]关键字是C语言语法保留和内置支持的,不存在优先级和结合性的问题。sizeof是用来求指定类型或指定变量的占用内存的字节数,使用注意有两种情况:1.求类型的字节数时,后面必须有括号2.求指定变量的字节数时,括号可以省略,也可以加上括号备注:建议都加上括号,这样就不会出错。例如:int x;sizeof出现在

2020-07-23 15:41:44 1004

原创 必须知道的C语言知识细节:break、continue语句区别

break语句、continue语句都是C语言标准规定的跳转类语句,能够实现程序无条件转向另一处执行。break和continue中在循环体中经常出现,因此必须掌握其区别,避免出错。先复习下两种语句的用法:break语句可以在开关体(switch语句)或循环体内(while,do…while,for)出现,总结起来用以下四种情况,实现跳出当前switch语句或循环体语句,跳转到开关体或循环体外执行下一条语句功能。while(....){ ... break; ...}d

2020-07-22 21:29:48 1237

原创 必须知道的C语言知识细节:|和||、&和&&区别

||和|,&和&&是初学者容易混淆的运算符。从运算符种类来看,两者是完全不同的运算符。||是逻辑运算符,表示逻辑或;&&是逻辑运算符,表示逻辑与;|是位运算符,表示按位或;&是位运算符,表示按位与。逻辑运算符的优先级比位运算符优先级低。按位或运算符|表示将两个整数用二进制表示后,按位进行操作,只要有1位出现1则当前位的值为1,每一位运算取值有以下4种情况。0|0=0 0|1=1 1|0=1 1|1=1按位与运算符&表示将两个整数

2020-07-22 16:25:47 2065

原创 必须知道的C语言知识细节:常量、#define、const区别

C语言中定义“常量”有三种方式,请注意,这里的“常量”是指实现等价的常量效果,例如数组长度100,圆周率PI等。备注:常量最大的特点是不可更改,编译时就知道其具体的值。第一种是严格意义上的常量,各种类型的字面值。C语言中严格意义的常量是指某种类型的具体值,例如整型值100,字符值 ‘a’,浮点型值3.14159,字符串常量"abcd",空指针常量NULL,枚举常量。例如:int r = 25; // 半径,25是常量,初始化赋值给变量rdouble s = rr3.14159; // 面积,3

2020-07-22 14:44:38 303

原创 必须知道的C语言知识细节:声明和定义

C语言中的声明(declaration)和定义(definition)是两个容易混淆的概念。声明只是给变量、函数、结构体、联合体命名,表明程序有该变量、函数、结构体、联合体。定义是具体给变量分配存储空间、给出函数的具体实现、指明结构体和联合体成员。简单理解:如果程序中仅仅有声明,缺少定义实现,最终无法生成可执行的程序,因为信息不完整,无法完成编译全过程。C语言中声明和定义的原则是:声明可以出现多次,定义有且只能出现一次。定义必须有,且只能出现一次。声明和定义可以同时出现。声明和定义可以分为以

2020-07-21 18:57:05 1337

原创 必须知道的C语言知识细节:左值和右值知识总结

C语言中左值和右值概念是来自赋值或复合赋值表达式。初学者会很容易迷惑,这里给出这两个概念总结。对于赋值表达式E1=E2,其中E1必须是可修改的左值,E2是右值。左值:简写lvalue,left value右值:简写rvalue,right value例如:int m = 1; 很明显m是左值,1是右值。左值是指向内存区域的对象,左值可以出现赋值表达式的左边或右边,当左值出现的右边时,自动转换为右值使用。右值是指存储在内存中的数值本身,右值不能出现的赋值表达式左边,否则编译出错。例如:int

2020-07-21 18:43:04 2720 1

原创 必须知道的C语言知识细节:i++和++i

i++是后缀自增运算符,++i是前缀自增运算符。正常情况下,执行完毕,两种等价,例如:int i=1;i++;int i=1;++i;执行完毕,i的值均为2。但是在复合的表达式中、函数调用中却有明显区别。i++,表示先取i的值进行表达式计算或函数调用,最后加法再计算 i=i+1;++i,表示先加法计算i=i+1,然后在进行表达式计算或函数调用。例如:int i = 1;int k1 = i++; // k1等于1i=1;int k2 = ++i; // k2等于2i = 1

2020-07-21 16:37:51 3554

原创 必须知道的C语言知识细节:进制表示

C语言中表示数时经常提到二进制、八进制、十进制和十六进制表示。为方便理解,先介绍十进制。十进制:是指由0,1,2,3,4,5,6,7,8,9 十个数字表示的数,逢十进位,因此是十进制,可以看出十进制没有单独数字10,因为不需要,10可以用进1位表示。同理:二进制:是有0和1两个数字表示的数,逢2进位,所以二进制中不会出现2。八进制:是指由0,1,2,3,4,5,6,7 八个数字表示的数,逢8进位。十六进制:是指由0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 十六个数字表示的数,

2020-07-21 16:26:35 2943

原创 C、C++、Java到Python,编程入门学习什么语言好?

最近,TIOBE更新了7月的编程语言榜单,常年霸榜的C、Java和Python依然蝉联前三位。万万没想到的是,R语言居然冲到了第八位,创下了史上最佳记录。而且后续随着业内对数据统计和挖掘需求的上涨,R语言热度颇有些势不可挡的架势。然而作为程序员吃饭的工具,编程语言之间也形成了某种鄙视链,各大论坛里弥漫着剑拔弩张的气氛,众口难调。也难怪有很多初学者会有疑惑,为什么会有这么多编程语言,我到底应该学什么语言?回顾编程语言几十年来的兴衰起伏,似乎也折射了整个信息产业的变迁消亡,想要在技术的洪流里激流勇进,找准

2020-07-21 16:10:32 500

原创 计算机专业学生毕业去大公司好还是小公司好?

作为一个程序员在选择公司的时候到底应该是选择大厂好还是小厂好呢?一直以来,如何选择公司是大家很关注的问题,徐老师经常收到大家类似的提问。于是,为了减轻小伙伴们的疑惑,徐老师专门整理了以下建议,希望可以给处于混沌状态的你一些参考。在我们进行选择的时候经常会听到这么两个声音:选择大公司好,因为大公司的工资高,福利好,工作安稳有保障;选择小公司好,小公司可以让你快速的学习,在大公司里只能做颗螺丝钉。在做选择前我们先来了解下大小公司各自的优缺点。大公司一般是指人数在100人以上的公司。它一般具.

2020-07-20 19:27:46 1397

原创 整数在内存中的存储大家都知道,那么小数是怎么存储的呢?

整数在内存中的存储方式比较简单,我们来看看小数在内存中的存储方式。首先,要学会十进制小数与二进制小数之间的转换。(1)二进制小数转化为十进制小数比如把二进制小数110.11转化为十进制小数,步骤如下:(2)十进制小数转化为二进制小数方法:1,先分别把十进制小数的整数部分和小数部分转化为二进制2,然后合并当然整数部分很简单,直接进行二进制转化,而小数部分就不一样了。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行

2020-07-20 19:08:57 852

原创 计算机类专业都有什么区别?

随着社会日新月异的发展,计算机专业,逐渐变得炙手可热,也正因为如此,在选择这个专业的时候,应该结合自己的兴趣和未来想从事的职位进行综合考量。那第一步,就是给自己建立一个计算机及相关系统的认知,那首先先来问问你,你知道现代计算机生态系统都有哪些分类吗?计算机及相关系统可以简单划分为如下概念:计算机硬件计算机软件计算机网络计算机硬件就是组成计算机的物理条件,目前都是基于图灵系统构造的。包含了计算机、单片机等。当然还有相应的周边硬件也可以属于计算机硬件,比如打印机、路由器等。计算机软件分.

2020-07-18 19:08:34 3135 2

原创 C++ 手把手教你实现可变长的数组

—***** 1******—*要实现什么函数呢?假设我们要实现一个会自动扩展的数组类,我们需要实现函数呢?先从下面 main 函数使用的功能,看看有什么函数是需要我们实现的。输出结果:0 1 2 3 4要实现如上的功能,要做哪些事情呢?先列出来:要用动态分配的内存的方式,来存放数组元素,且需要一个指针成员变量重载赋值 = 运算符重载括号 [] 运算符重载复制构造函数实现 push_b

2020-07-18 16:45:53 1629

原创 在走往C语言C系列编程程序员的路上,读这篇文章让你不易走偏!

作为想去往程序员的路上,C++是一个必须学会的编程语言,下面我就我学习的C++知识和大家谈谈,C++的入门知识汇总。首先先来看一个最基础的简单程序:#includeusing namespace std;void main(){coutcoutgetchar();}这程序的执行结果就是在屏幕中成功输出一段话作为入门学者,往往只有看到程序执行完后有数据输出才的判断自己的程序是否编写正确,但是这其实只能表明你的程序没有编译错误,至于程序有没有问题这就涉及到软件测试的相关知

2020-07-17 16:20:06 754

转载 17条嵌入式C语言编程小知识总结

流水线被指令填满时才能发挥最大效能,即每时钟周期完成一条指令的执行(仅指单周期指令)。如果程序发生跳转,流水线会被清空,这将需要几个时钟才能使流水线再次填满。因此,尽量少的使用跳转指令可以提高程序执行效率,解决发案就是尽量使用指令的“条件执行”功能。在LPC2200系列中:可以通过过下面的程序延迟10毫秒:for(i=0;i<200;i++){for(j=0;j<200;j++);}通过下面语句将一个16位的变量放在两个8位的变量中。//IP数据报总长度高字节..

2020-07-17 15:40:04 150

原创 不同薪资的代码,差别在哪里?

看这代码水平如何?开8k的工资我就写8k的代码,开20k的工资我就写20k的代码。下面这代码可读性爆表了!*测试:没BUG呀产品:功能实现了呀考核:代码提交足行队友:*太简洁易读了一本书上说,下面的 C 语言代码可能会产生无限循环。****你看出Bug在哪里吗?雷军1994年写的汇编代码,你见过吗?其实做为一个学习者,有一个学习的氛围跟一个交流圈子特别重要这里我推荐一个C/C++基础交流583650410,不管你是小白还是转行人士欢迎入驻,大家一起交流成长。...

2020-07-15 15:37:43 456

原创 深度探索C++对象模型:类的大小

现在有这样一段代码:class X { }; class Y : public virtual X { }; class Z : public virtual X { }; class A : public Y, public Z {}; 对 class X、Y、Z、A 进行 sizeof 运算结果是什么呢?如果你心里已经有了答案,不妨看完下面的分析再说。C++ 初学者常有一个错误

2020-07-14 16:16:50 150

原创 深度探索C++对象模型:成员变量的初始化列表

对 class members 的初始化操作可以放在 member initialization list 或者 construct 中进行,但两者之间是有一些区别的,无论是在效率上还是在语法上。何时应该使用 initialization list ?在语法方面来说,为了程序可以通过编译,下面几种情况必须使用 initialization list :当初始化一个 reference member 时当初始化一个 const member 时当调用一个 base class 的 construct

2020-07-14 15:55:27 163

原创 为什么看到这么多人不推荐C++?

2000年左右是C++的鼎盛期,游戏,图形界面,科学计算,后台服务,各种新语言的实现语言,甚至入侵了一点操作系统里C的地盘。一项技术,火起来蜂拥而上,泥沙俱下,平稳后发现后劲不足,或者有另一个风口出现,便如树倒萎溃散。进化是好事,进化的同时要吸取经验,避免出现返祖现象。C++之父写过一本神书,«C++语言的设计和演化»,鄙人孤陋寡闻,似乎这是唯一一本阐述语言设计理念、折衷的辛苦无奈历程,Bjarne 在书中提出了很多极具智慧的设计理念,比如时下小火的俨然C++继任者 Rust 也极为推崇的“零代价抽象.

2020-07-14 15:13:05 554

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除