C语言和C++的区别和联系

2023-05-16

C语言虽说经常和C++在一起被大家提起,但可千万不要以为它们是一种编程语言。我们来介绍C语言和C++中的区别和联系。

首先C++和C语言本来就是两种不同的编程语言,但C++确实是对C语言的扩充和延伸,并且对C语言提供后向兼容的能力。对于有些人说的C++完全就包含了C语言的说法还是有点别扭的。

可以关注 微 信 公 众 号  “C和C加加”  回复 “ZXC” 即可获取 C/C++详细教程 和 PDF版!

一、C语言是面向过程语言,而C++是面向对象语言

我们都知道C语言是面向过程语言,而C++是面向对象语言,说C和C++的区别,也就是在比较面向过程和面向对象的区别。

1、面向过程和面向对象的区别

  • 面向过程:面向过程编程就是分析出解决问题的步骤,然后把这些步骤一步一步的实现,使用的时候一个一个的依次调用就可以了。
  • 面向对象:面向对象编程就是把问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。

2、面向过程和面向对象的优缺点

在学习一些比较抽象的概念时,由于我们的理解能力很有限,有时候一些比较恰当的例子也是有助于我们学习的,因此对二者的优缺点比较,还是先举例子,后总结吧!
(1)用面向过程写出来的程序就像一份蛋炒饭,也就是米饭和炒的菜均匀的混合在了一起,因此蛋炒饭入味均匀,不会像盖浇饭那样,可能有时候吃的菜多饭少,还有时候菜少饭多。但是如果你不喜欢吃蛋炒饭,只想吃肉炒饭,那么原来做的这份蛋炒饭就得倒掉了,重新做一份肉炒饭,厨师就得辛苦了!

(2)用面向对象写出来的程序就像一份盖浇饭,也就是米饭和盖菜分别做好,将盖菜放在米饭上面,盖浇饭虽然没有蛋炒饭那样入味均匀,但是如果给了你一份土豆丝盖饭,你又不想吃了,换成牛肉盖饭,厨师只需要将米饭上面的土豆丝倒掉,重新做一份牛肉放在上面就好了。

那么到底蛋炒饭和盖浇饭哪个好吃呢?
谁也不能说到底哪个好,毕竟蛋炒饭的餐馆和盖浇饭的餐馆都很多,而且生意都很不错,存在即为合理!
如果非要将二者进行一个高地的比较的话,那就得先设定一个场景了!
盖浇饭的好处就是”菜”“饭”分离,从而提高了制作盖浇饭的灵活性。饭不满意就换饭,菜不满意换菜。用专业术语来说就是”可维护性“较好,”饭” 和”菜”的耦合度比较低。
蛋炒饭将”蛋”“饭”搅和在一起,想换”蛋”“饭”中任何一种都很困难,耦合度很高,以至于”可维护性”比较差。

二者的简单总结如下:

面向过程语言

  • 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
  • 缺点:没有面向对象易维护、易复用、易扩展

面向对象语言:

  • 优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护
  • 缺点:性能比面向过程低

二、具体语言上的区别

1、关键字的不同

  • C语言有32个关键字
  • C++有63个关键字

2、后缀名不同

C源文件后缀.c,C++源文件后缀.cpp,在VS中,如果在创建源文件时什么都不给,默认是.cpp。

3、返回值

C语言中,如果一个函数没有指定返回值类型,默认返回int类型;C++中,如果一个函数没有返回值则必须指定为void。

4、参数列表

在C语言中,函数没有指定参数列表时,默认可以接收任意多个参数;但在C++中,因为严格的参数类型检测,没有参数列表的函数,默认为 void,不接收任何参数。

5、缺省参数

缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的参。(C语言不支持缺省参数)

  • 半缺省参数
void FunTest(int _iParam1, int _iParam2 = 0 )
{}
void FunTest(int _iParam1, int _iParam2 = 0 , int _iParam3/* = 0*/)
{}
void FunTest(int _iParam1, int _iParam2 /* = 0*/,int _iParam3 = 0)
{}
  • 全缺省参数
void FunTest(int _iParam1 = 0, int _iParam = 1)
{ }

//注意:慎用缺省函数,否则会产生二义性
void FunTest ()
{}
void FunTest (int a = 10 )
{}
//假如使用不带实参方式调用FunTest()函数时,编译器将不知道调用哪一个,产生二义性

注意:

  • 在半缺省的情况下,带缺省值的参数必须放在参数列表的最后面。
  • 缺省参数不能同时在函数的声明和函数定义中出现,二者只能选其一。
  • 缺省值必须是常量或者全局变量。
  • 缺省参数必须通过值参或常参传递。

6、函数重载

函数重载:函数重载是函数的一种特殊情况,指在同一作用域中,声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数、类型、顺序)必须不同,返回值类型可以相同也可以不同,常用来处理实现功能类似数据类型不同的问题。(C语言没有函数重载,C++支持函数重载)。

C语言中产生函数符号的规则是根据名称产生,这也就注定了c语言不存在函数重载的概念。而C++生成函数符号则考虑了函数名、参数个数、参数类型。需要注意的是函数的返回值并不能作为函数重载的依据,也就是说int sum和double sum这两个函数是不能构成重载的!

我们的函数重载也属于多态的一种,这就是所谓的静多态。

  • 静多态:函数重载,函数模板
  • 动多态(运行时的多态):继承中的多态(虚函数)。

使用重载的时候需要注意作作用域问题:请看如下代码。

#include <iostream>
 
using namespace std;
 
bool compare(int a,int b)
{
    return a > b;
}
 
bool  compare(double a,double b)
{
    return a > b;
}
 
int main()
{
    //bool compare(int a,int b);
    compare(10,20);
    compare(10.5,20.5);
    return 0;
}

我在全局作用域定义了两个函数,它们由于参数类型不同可以构成重载,此时main函数中调用则可以正确的调用到各自的函数。

但是请看main函数中被注释掉的一句代码。如果我将它放出来,则会提出警告:将double类型转换成int类型可能会丢失数据。

这就意味着我们编译器针对下面两句调用都调用了参数类型int的compare。由此可见,编译器调用函数时优先在局部作用域搜索,若搜索成功则全部按照该函数的标准调用。若未搜索到才在全局作用域进行搜索。

总结:C语言不存在函数重载,C++根据函数名参数个数参数类型判断重载,属于静多态,必须同一作用域下才叫重载。

7、const

C语言中被const修饰的变量不是常量,叫做常变量或者只读变量,这个常变量是无法当作数组下标的。然而在C++中const修饰的变量可以当作数组下标使用,成为了真正的常量。这就是C++对const的扩展。

C语言中的const:被修饰后不能做左值,可以不初始化,但是之后没有机会再初始化。不可以当数组的下标,可以通过指针修改。简单来说,它和普通变量的区别只是不能做左值而已。其他地方都是一样的。

C++中的const:真正的常量。定义的时候必须初始化,可以用作数组的下标。const在C++中的编译规则是替换(和宏很像),所以它被看作是真正的常量。也可以通过指针修改。需要注意的是,C++的指针有可能退化成C语言的指针。比如以下情况:

int b = 20;
const int a = b;

这时候的a就只是一个普通的C语言的const常变量了,已经无法当数组的下标了。(引用了一个编译阶段不确定的值)

const在生成符号时,是local符号。即在本文件中才可见。如果非要在别的文件中使用它的话,在文件头部声明:extern cosnt int data = 10;这样生成的符号就是global符号。

总结:C中的const叫只读变量,只是无法做左值的变量;C++中的const是真正的常量,但也有可能退化成c语言的常量,默认生成local符号。

8、引用

说到引用,我们第一反应就是想到了他的兄弟:指针。引用从底层来说和指针就是同一个东西,但是在编译器中它的特性和指针完全不同。

    int a = 10;
	int &b = a;
	int *p = &a;
 
	//b = 20;
	//*p = 20;

首先定义一个变量a = 10,然后我们分别定义一个引用b以及一个指针p指向a。我们来转到反汇编看看底层的实现:

可以看到底层实现完全一致,取a的地址放入eax寄存器,再将eax中的值存入引用b/指针p的内存中。至此我们可以说(在底层)引用本质就是一个指针。

了解了底层实现,我们回到编译器。我们看到对a的值的修改,指针p的做法是*p = 20;即进行解引用后替换值。底层实现:

再来看看引用修改:

我们看到修改a的值的方法也是一样的,也是解引用。只是我们在调用的时候有所不同:调用p时需要*p解引用,b则直接使用就可以。由此我们 推断出:引用在直接使用时是指针解引用。p直接使用则是它自己的地址。

这样我们也了解了,我们给引用开辟的这块内存是根本访问不到的。如果直接用就直接解引用了。即使打印&b,输出的也是a的地址。

在此附上将指针转为引用的小技巧:int *p = &a,我们将 引用符号移到左边 将 *替换即可:int &p = a。

接下来看看如何创建数组的引用:

int array[10] = {0};       //定义一个数组

我们知道,array拿出来使用的话就是数组array的首元素地址。即是int *类型。

那么&array是什么意思呢?int **类型,用来指向array[0]地址的一个地址吗?不要想当然了,&array是整个数组类型。

那么要定义一个数组引用,按照上面的小诀窍,先来写写数组指针吧:

int (*q) [10] = &array;

将右侧的&对左边的*进行覆盖:

int (&q)[10] = array;

测试sizeof(q) = 10。我们成功创建了数组引用。

经过上面的详解 ,我们知道了引用其实就是取地址。那么我们都知道一个立即数是没有地址的,即

int &b = 10;

这样的代码是无法通过编译的。那如果你就是非要引用一个立即数,其实也不是没有办法:

const int &b  = 10;

即将这个立即数用const修饰一下,就可以了。为什么呢?

这时因为被const修饰的都会产生一个临时量来保存这个数据,自然就有地址可取了。

9、malloc,free && new,delete

这个问题很有意思,也是重点需要关注的问题。malloc()和free()是C语言中动态申请内存和释放内存的标准库中的函数。而new和delete是C++运算符、关键字。new和delete底层其实还是调用了malloc和free。它们之间的区别有以下几个方面:

1)、malloc和free是函数,new和delete是运算符。

2)、malloc在分配内存前需要大小,new不需要。

例如:int *p1 = (int *)malloc(sizeof(int));

           int *p2 = new int;     //int *p3 = new int(10);

malloc时需要指定大小,还需要类型转换。new时不需要指定大小因为它可以从给出的类型判断,并且还可以同时赋初始值。

3)、malloc不安全,需要手动类型转换,new不需要类型转换。

详见上一条。

4)、free只释放空间,delete先调用析构函数再释放空间(如果需要)。

与第⑤条对应,如果使用了复杂类型,先析构再call operator delete回收内存。

5)、new是先调用构造函数再申请空间(如果需要)。

与第④条对应,我们在调用new的时候(例如int *p2 = new int;这句代码 ),底层代码的实现是:首先push 4字节(int类型的大小),随后call   operator new函数分配了内存。由于我们这句代码并未涉及到复杂类型(如类类型),所以也就没有构造函数的调用。如下是operator new的源代码,也是new实现的重要函数:

void *__CRTDECL operator new(size_t size) _THROW1(_STD bad_alloc)
        {       // try to allocate size bytes
        void *p;
        while ((p = malloc(size)) == 0)
                if (_callnewh(size) == 0)
                {       // report no memory
                        _THROW_NCEE(_XSTD bad_alloc, );
                }
 
        return (p);
        }

我们可以看到,首先malloc(size)申请参数字节大小的内存,如果失败(malloc失败返回0)则进入判断:如果_callnewh(size)也失败的话,抛出bad_alloc异常。_callnewh()这个函数是在查看new handler是否可用,如果可用会释放一部分内存再返回到malloc处继续申请,如果new handler不可用就会抛出异常。

6)、内存不足(开辟失败)时处理方式不同。

malloc失败返回0,new失败抛出bad_alloc异常。

7)、new和malloc开辟内存的位置不同。

malloc开辟在堆区,new开辟在自由存储区域。

8)、new可以调用malloc(),但malloc不能调用new。

new就是用malloc()实现的,new是C++独有malloc当然无法调用。

10、作用域

C语言中作用域只有两个:局部,全局。C++中则是有:局部作用域,类作用域,名字空间作用域三种。

所谓名字空间就是namespace,我们定义一个名字空间就是定义一个新作用域。访问时需要以如下方式访问(以std为例)

std::cin<< "123" <<std::endl;

例如我们有一个名字空间叫Myname,其中有一个变量叫做data。如果我们希望在其他地方使用data的话,需要在文件头声明:using Myname::data;这样一来data就使用的是Myname中的值了。可是这样每个符号我们都得声明岂不是累死?

我们只要using namespace Myname;就可以将其中所有符号导入了。

这也就是我们经常看到的using namespace std;的意思啦。
 

可以关注 微 信 公 众 号  “C和C加加”  回复 “ZXC” 即可获取 C/C++详细教程 和 PDF版!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言和C++的区别和联系 的相关文章

  • Rviz中控制机器人模型运动(arbotix)

    前言 xff1a 通过 URDF 结合 rviz 可以创建并显示机器人模型 xff0c 不过 xff0c 当前实现的只是静态模型 xff0c 如何控制模型的运动呢 xff1f 在此 xff0c 可以调用 Arbotix 实现此功能 简介 A
  • Gazebo仿真环境搭建(04)

    Gazebo 中创建仿真实现方式有两种 1 直接添加内置组件创建仿真环境 1 1启动 Gazebo 并添加组件 1 2保存仿真环境 添加完毕后 xff0c 选择 file gt Save World as 选择保存路径 功能包下 world
  • 树莓派4b安装ubuntu18.04和ros-melodic(一)

    因为用到了树莓派这个集成计算机 xff0c 所以买了张sd卡自己配置了一下环境 每个人环境都不一样 xff0c 但是大体方法流程都是一样 xff0c 我用了一周的时间配置好的 xff0c 说实话真的很麻烦所以在这里我把方法分享给大家 xff
  • 集成学习详解

    入门小菜鸟 xff0c 希望像做笔记记录自己学的东西 xff0c 也希望能帮助到同样入门的人 xff0c 更希望大佬们帮忙纠错啦 侵权立删 目录 一 集成学习的产生原因与相关定义 1 产生原因 2 相关定义 xff08 1 xff09 同质
  • 深度学习之优化算法

    入门小菜鸟 xff0c 希望像做笔记记录自己学的东西 xff0c 也希望能帮助到同样入门的人 xff0c 更希望大佬们帮忙纠错啦 侵权立删 目录 一 优化算法与深度学习 1 优化算法对于深度学习的意义 2 优化算法与深度学习的关系 3 优化
  • Redis常用命令(超详细整理)

    1 字符串string操作命令 Redis中字符串类型常用命令 xff1a SET key value 设置指定的key值 GET key 获取指定key的值 SETEX key seconds value 设置指定key的值 xff0c
  • linux/android中aplay/arecord用法以及命令

    linux xff1a 1 查看声卡 xff1a root 64 sos dom0 aplay l List of PLAYBACK Hardware Devices card 0 broxtontdf8532 broxton tdf853
  • linux怎么查看防火墙状态

    1 通过SSH连接登录linux系统 2 输入如下命令 xff1a systemctl status firewalld 3 敲回车即可查看防火墙的状态 xff0c 如下状态表示防火墙已经关闭 4 又或输入命令 xff1a service
  • 一闪一闪的星星特效效果

    首先让我们看一下一闪一闪的星星特效效果如下图 xff1a 让我们先看一下布局 xff1a span class token tag span class token tag span class token punctuation lt s
  • 实现红绿灯的效果

    首先看一下效果如下 xff1a html部分 xff1a span class token tag span class token tag span class token punctuation lt span div span spa
  • 图书管理系统数据库SQL设计思路

    1 x1f58d 需求分析 一个图书管理系统包括用户信息维护 图书馆信息 图书信息维护 书籍借出 书籍归还 借书记录 支付查询等 此系统功能用户可以借书 续借 归还 查询书籍 增加 修改和删除 2 x1f58b 需求 1 用户信息维护 xf
  • jQuery夹娃娃小游戏

    点击开始 xff0c 爪子开始往下移夹娃娃首先让我们看一下它的效果图如下 xff1a 页面布局代码如下 xff1a span class token tag span class token tag span class token pun
  • 酒店管理系统数据库SQl设计思路

    第一节 x1f58d 需求分析 一个酒店管理系统包括很多个模块 xff0c 首先我们先要分析一下需求 一 实时房态图 动态生成实时房态图 在房态图上进行房态修改 换房操作 xff0c 续住操作 选择房间进行散客 团队预定 散客 团队入住 散
  • 超经典的20道SQL题目(附加解题思路)

    最近学了SQL的内容 xff0c 老师也给我们发了练习题 xff0c 感觉在做题的过程中得到了提高 xff0c 所以将题目和我自己的答案分享一下 xff0c 希望对大家有所帮助 我使用的是SQL Server 2014 Management
  • 《酒店管理系统》项目总结

    一 项目模块 二 业务流程图 三 业务流程功能实现 1 首先客人接待 xff1a 实时房态图 xff0c 可以直观的显示出所有客房的状态 2 客人预定 xff1a 根据客人的基本资料做预订 xff0c 在房态图上的客房添加一个预定的标识 3
  • Java基础语法

    一 基础语法 Java大小写敏感 比如HelloWorld和Helloworld是不一样的 包名 Package 公司 组织 个人的域名的反向 xff0c 一般是英文字母 英文字母必须是小写 类名 xff08 ClassName xff09
  • Java中的分支语句

    一 前言 本篇文章讲解的知识点是 xff1a 分支语句 xff0c 希望大家能掌握 二 分支语句 提示 xff1a if else 语句可以看作有4种形式 xff1a 1 if 语句 代码 xff1a span class token ke
  • Linux 下ALSA音频工具amixer,aplay,arecord使用

    ALSA音频工具amixer aplay arecord ALSA音频工具编译安装 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
  • Java中的循环语句

    一 前言 本篇文章主要讲解Java知识点是 xff1a 循环语句 希望大家读完这篇文章之后能掌握以下几种循环语句的知识点 二 循环语句 提示 xff1a 循环语句分为以下几种 xff1a 1 for循环 循环场景 xff1a 更适用于明确循
  • Java数组

    对于所有的编程语言来说数组都是相对比较重要的数据结构之一 在Java中数组主要用来存放一组固定大小的相同类型的数据 xff08 一 xff09 数组变量的声明 数组声明有两种写法 xff1a dataType span class toke

随机推荐

  • 运用C在Linux系统中写贪吃蛇小游戏

    最近在学习Linux操作系统的运用 通过写下贪吃蛇这个小游戏 xff0c 加深对c语言的理解以及Linux操作系统的运用 在文章中逐步解析贪吃蛇的整个构建逻辑 并将它记录下来 1 运用ncurses库编写贪吃蛇小游戏 在开始编译贪吃蛇小游戏
  • Vue3入门级别笔记-适用于入门

    前言 xff1a Vue3快速上手 1 Vue3简介 2020年9月18日 xff0c 发布Vue js3 0版本 xff0c 代号 xff1a One Plece xff08 海贼王 xff09 2 Vue3带来了什么 性能升级 打包大小
  • 前端全模块常见面试题与答案详解

    x1f353 作者主页 xff1a x1f496 仙女不下凡 x1f496 x1f353 学习建议 xff1a 以下 x1f447 内容不建议死记硬背 xff0c 而且内容太多也记不住 xff0c 建议了解链接里面的详情解释之后在理解我总结
  • 一、Echart图表 之 基本使用及配置项

    x1f353 作者主页 xff1a x1f496 仙女不下凡 x1f496 x1f353 前言介绍 xff1a 以下 x1f447 内容是我个人对于该技术的总结 xff0c 如有不足与错误敬请指正 xff01 x1f353 欢迎点赞 x1f
  • 三、Echart图表 之 X轴(xAxis)与 Y轴(yAxis)配置项大全

    x1f353 作者主页 xff1a x1f496 仙女不下凡 x1f496 x1f353 前言介绍 xff1a 以下 x1f447 内容是我个人对于该技术的总结 xff0c 如有不足与错误敬请指正 xff01 x1f353 欢迎点赞 x1f
  • 二、Echart图表 之 title配置项大全

    x1f353 作者主页 xff1a x1f496 仙女不下凡 x1f496 x1f353 前言介绍 xff1a 以下 x1f447 内容是我个人对于该技术的总结 xff0c 如有不足与错误敬请指正 xff01 x1f353 欢迎点赞 x1f
  • 四、Echart图表 之 颜色color配置项大全

    x1f353 作者主页 xff1a x1f496 仙女不下凡 x1f496 x1f353 前言介绍 xff1a 以下 x1f447 内容是我个人对于该技术的总结 xff0c 如有不足与错误敬请指正 xff01 x1f353 欢迎点赞 x1f
  • 五、Echart图表 之 legend图例组件配置项大全

    x1f353 作者主页 xff1a x1f496 仙女不下凡 x1f496 x1f353 前言介绍 xff1a 以下 x1f447 内容是我个人对于该技术的总结 xff0c 如有不足与错误敬请指正 xff01 x1f353 欢迎点赞 x1f
  • linux/clearlinux/ubuntu curl 命令详解

    介绍 xff1a cURL是一个利用URL语法在命令行下工作的文件传输工具 xff0c 1997年首次发行 它支持文件上传和下载 xff0c 所以是综合传输工具 xff0c 但按传统 xff0c 习惯称cURL为下载工具 cURL还包含了用
  • 六、Echart图表 之 tooltip提示框组件配置项大全

    x1f353 作者主页 xff1a x1f496 仙女不下凡 x1f496 x1f353 前言介绍 xff1a 以下 x1f447 内容是我个人对于该技术的总结 xff0c 如有不足与错误敬请指正 xff01 x1f353 欢迎点赞 x1f
  • 常用方法——9.js中无区别分割中英文逗号的字符串成为数组

    x1f348 作者主页 xff1a x1f496 仙女不下凡 x1f496 x1f348 前言介绍 xff1a 以下 x1f447 内容都是我个人对于前端知识的总结 xff0c 会定期更新欢迎持续关注 xff01 x1f348 欢迎点赞 x
  • 6.常见报错-已解决:v-on event ‘@showSizeChange‘ must be hyphenated

    x1f33a 作者主页 xff1a x1f331 仙女不下凡 x1f331 x1f33a 欢迎点赞 x1f44d 收藏 留言 x1f4dd 如有错误敬请指正 xff01 v span class token operator span on
  • 记录·linux系统中硬盘的挂载与格式化

    一 首先为虚拟机添加新硬盘 xff1a 1 单击 硬盘 开始进行硬盘的添加 xff1a 这时新添加的硬盘还不能用 xff0c 我们还需继续进行对磁盘的第二个步骤 xff1a 分区 二 磁盘的分区 1 这时我们需使用 lsblk 命令 xff
  • 记录 · linux系统创建RAID

    目标需求 xff1a 创建RAID卷设备名为md127 级别5 xff0c 使用2个硬盘建立RAID 1个硬盘作为热备份 并创建成ext3系统文件 xff0c 最后挂载到 mnt md127 一 说明 一般创建RAID卷有两种方法 xff0
  • 记录 · Samba服务部署

    Samba 服务器可以使用户在异构网络操作系统之间进行文件共享 Samba 服务器提供了在Windows 环境下共享 Linux 中用户目录的一个工具 在Linux 中安装Samba 后 xff0c Windows 用户只需进行简单的用户登
  • ROS如何创建一个发布者Publisher

    1 创建工作环境 首先我们需要在主文件夹创建功能包 先创建一个文件夹 mkdir catkin ws cd catkin ws mkdir src catkin ws为我们文件夹的名称 添加工程包需要的依赖 cd catkin ws src
  • C++书籍推荐(小白变大牛最全书单)

    一 C 43 43 书籍推荐之手册类 xff08 适用所有级别 xff09 可以关注博主的微 信 公 众 号 xff1a C和C加加 回复 88 即可领取相关电子书和C 43 43 教程大全 1 C 43 43 程序设计语言 The C 4
  • 最新C语言编程软件推荐(2021整理)

    一 C语言编程软件推荐 C语言编程软件适于编写系统软件 xff0c 是学习编程的同学们的必备软件 c语言一种应用非常广泛的编程语言 xff0c 不仅仅是在软件开发上 xff0c 而且各类科研都会用到c语言 今天小编给大家汇总下C语言的编程软
  • Jmeter性能测试(4)---HTTP请求详解

    jmeter xff08 四 xff09 HTTP请求 启动jmeter xff0c 建立一个测试计划 启动 xff1a 打开jmeter文件夹 xff0c bin文件 jmeter bat xff08 Windows执行文件 xff09
  • C语言和C++的区别和联系

    C语言虽说经常和C 43 43 在一起被大家提起 xff0c 但可千万不要以为它们是一种编程语言 我们来介绍C语言和C 43 43 中的区别和联系 首先C 43 43 和C语言本来就是两种不同的编程语言 xff0c 但C 43 43 确实是