C和Cpp区别

2023-05-16

1.输入,输出不同(out,put)

  c语言:#include<stdio.h>

               scanf("%d",&a);printf("a = %d\n",a);

  cpp:#include<iostream>

           using namespace std;

             cin>>a>>ch;cout<<"a = "<<a<<"ch = "<<ch<<endl;

2.常量

   cpp中const常变量在编译时被替换,定义的变量有类型,占用存储单元,有地址,可以用指针指向它,但不能修改它

   c语言中习惯用#define来定义常量,实际上,这种方法只是在预编译时进行字符置换,不占用存储单元,容易出错

3.引用(别名)

   在cpp没有空引用(int &a;),引用时必须要初始化(int &a = c;),没有引用的引用。

void Swap_Int(int& a, int& c)
{
	int tmp = a;
	a = c;
	c = tmp;
}
int main()
{
	int a = 10;
	int b = a;
	int& c = a;//引用
			   //a就是c,c就是a,对a的改变就是对c的改变,对c的改变就是对a的改变,取a的地址就是取c的地址,取c的地址就是取a的地址
	int d = 30;
	Swap_Int(a, b);
	
	return 0;
}

4.函数重载

   cpp中区分函数----函数名(相同)+(形参类型+形参个数)(不同)---->函数重载

   c中区分函数-----函数名

    在cpp中,靠返回类型,函数名,参数列表区分函数
    函数重载:函数名相同,参数个数或类型不同或者两个都不同
               返回类型不能作为函数重载的依据

int Max(int a, int b)
{
	return a > b ? a : b;
}

int Max(int a, int b,int c)
{
	return Max(a, Max(b, c));
}
char Max(char a, char b)
{
	return a > b ? a : b;
}

double Max(double a, double b)
{
	return a > b ? a : b;
}

int main()
{
	int max_int = Max(12, 23);
	char max_char = Max('a', 'b');
	double max_double = Max(12.23, 23.34);
}

5.cpp的函数形参依次可以给默认值

       从右向左依次给形参给默认值,不能跳着给
        函数调用时如果给形参全部赋值,会替换默认值
        函数调用时必须从左向右给实参给值,默认值可以不给
        函数有声明时,默认值必须在声明中给

void fun(int a, int b, int c, int d = 0)
{

}

int main()
{
	fun(1, 2, 3);
	fun(12, 23, 45, 67);
}

6.堆区开辟空间不同

   c以前博客有介绍

   cpp:new开辟,delete删除

        int *p = new int(10);//开辟一个空间,并将其初始化为10;
        delete p;p = NULL;//释放刚刚开辟的空间
        int *s = new int;//开辟一个空间,不初始化
        delete s;s = NULL;

        new *ps = new int[n];//开辟n个整形空间 
        delete []s;//释放

int main()
{
	int n = 0;
	int* s = new int;//开辟一个整型空间,不赋值
	int* p = new int(10);//开辟一个整型空间,并将其初始化为10
	int* q = new int[n];//开辟n个整型空间

	delete s;
	s = NULL;
	delete p;
	p = NULL;
	delete[]q;//释放连续的多个整型空间
	q = NULL;
}

7.

     //.c文件(C89)语句之后不能再定义变量,否则编译不通过(比如在执行printf语句之后不能再定义变量)
     //.cpp(C99)可以,遵循的标准不同

 

 

 

 

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

C和Cpp区别 的相关文章

随机推荐

  • 基于亚博K210开发板的学习之旅(一)

    本文参考亚博智能官方K210开源课程 五月份购买了亚博的K210开发板 xff0c 但由于课程压力就搁置了 xff0c 最近暑假得空又恰逢电赛清单里有这个 芯片 xff0c 就抽空学习一下 xff0c 特写下这些 xff0c 以作记录 按照
  • STM32标准库通用软件模拟IIC

    STM32标准库通用软件模拟IIC 继上次通用可移植的矩阵键盘之后 xff0c 便继续寻找着下一个能够拿来只需改改引脚就可以使用的通用方案 恰好最近在研究PCA9685 xff0c 这是一片能够产生最多十六路PWM信号的芯片 xff0c 通
  • STM32F103控制PCA9685产生16路PWM波控制SG90舵机

    STM32控制PCA9685产生16路PWM波控制SG90舵机 如果你能点开这篇文章 xff0c 说明你已经知道PCA9685是多么强大 xff0c NXP公司原本做这片芯片是为了提供给LED使用 xff0c 在其官方文档里也能看到所有PW
  • 从源代码来看HAL库函数(一) HAL基础函数

    从源代码来看HAL库函数 xff08 一 xff09 HAL基础函数 全局变量 IO uint32 t uwtick 这个变量充当了一个运行时长计数的作用 xff0c 每发生一次SysTick中断就会加一 xff0c 直至溢出 xff0c
  • 使用TCP+串口与板子进行网络通信

    最近做了一个嵌入式的project xff0c 大概要求就是做一个client端 xff0c 一个sensor端 xff0c 两者通过TCP UDP进行通信 xff0c 然后在client端输入不同的命令sensor需做出不同的处理 xff
  • 毕业论文格式(图片题注引用,表格,公式格式)

    本科毕业论文差不多写完了 xff0c 记录一下一些格式 xff0c 以后写作可能会用到 xff0c 就可以翻起来看看 首先 xff0c 如果可以找到一篇格式符合要求的word文档的话 xff0c 最简单的方法就是在这个文档的基础上进行内容的
  • 图像处理——相位恢复(GS,TIE,改进型角谱迭代法)(已更新代码)

    利用GS xff0c TIE xff0c 改进型角谱迭代算法进行相位恢复 角谱传播理论 角谱传播理论可以翻阅傅里叶光学的书 xff0c 就能找到定量分析的计算公式 xff0c 可以分析某个平面的角谱垂直传播到另外一个平面的角谱 xff0c
  • 串口应用:遵循uart协议,发送多个字节的数据(状态机)

    上一节中 xff0c 我们遵循uart协议 xff0c 它发送一次只能发送6 7 8位数据 xff0c 我们不能随意更改位数 xff08 虽然在代码上可行 xff09 xff0c 不然就不遵循uart协议了 xff0c 会造成接收端无法接收
  • 数码管动态显示Verilog实现(参考小梅哥教程)(视觉暂留)

    一个数码管有八个引脚 xff0c 控制八段二极管的亮灭 xff0c 用以显示需要的数字 当有N个数码管时 xff0c 一个一个控制的话需要N x 8 个引脚 xff0c 消耗资源较多 因此可以利用动态显示的方案通过人眼的视觉暂留特性达到静态
  • 彻底理解DDS(信号发生器)的fpga实现(verilog设计代码)

    DDS xff08 Direct Digital Synthesis xff09 是一种把一系列数字信号通过D A转换器转换成模拟信号的数字合成技术 它有查表法和计算法两种基本合成方法 在这里主要记录DDS查表法的fpga实现 查表法 xf
  • HDMI/DVI

    一 基础知识 1 历史 早期在FPGA芯片上实现HDMI控制显示是使用HDMI发送芯片 xff0c eg xff1a ADV7513 sil9022 xff0c CH7301等 用之前VGA控制中输出的RGB信号 行场同步信号和使能信号输入
  • HDMI/DVI____TMDS编码

    一 编码步骤 xff1a 基本方法 xff1a 取第一位数据为初值 xff0c 接下来输入的每一位与前一导出的位 xff08 根据判断条件 xff09 进行异或XOR或者同或XNOR xff08 最小化传输 xff0c 减少0 1翻转 xf
  • HDMI/DVI____串行发送器

    一 功能 xff1a 把10bit数据转化为串行数据在一个时钟周期全部输出 xff08 先输出高位 xff0c 再输出低位 xff09 二 框图 二 思路 对于TMDS编码器 xff0c 在每一个输入时钟周期 xff0c 输入一次数据到TM
  • keil添加新文件.c.h

    文章目录 添加文件到组中1 双击组名称2 点击快捷键 添加头文件路径 h1 点击魔术棒快捷键2 头文件加 添加文件到组中 1 双击组名称 双击组名称 xff0c 打开弹窗 xff0c 然后选择相应的组中的新文件 xff0c 在点击ADD 2
  • QT常用控件(二)——自定义控件封装

    引言 Qt已经提供了很多的基础控件供开发使用 xff0c 而Qt原生的控件有时候并不能满足我们的需求 xff0c 特别是在工业的运用上 xff0c 比如我们需要一个日期时间的选择器 xff0c Qt虽然已经提供了原生的QDateTime控件
  • STM32之串口通信USART模块学习(1)

    一 通信接口 通信的目的 xff1a 将一个设备的数据传送到另一个设备 xff0c 扩展硬件系统通信协议 xff1a 制定通信的规则 xff0c 通信双方按照协议规则进行数据收发 单端信号通信的双方必须要共地 xff0c 因为都是对GND的
  • 2019电赛总结(一)

    2019电赛总结 xff08 一 xff09 文章目录 2019电赛总结 xff08 一 xff09 4 那之前5 电赛初期6 电赛中期7 电赛强化练习8 电赛预热阶段8月初9 那以后 4 那之前 2019电赛总结 序 xff09 5 电赛
  • 统计从键盘输入的一行字符中小写字母,大写字母,数字字符和其它字符的个数。

    统计从键盘输入的一行字符中小写字母 xff0c 大写字母 xff0c 数字字符和其它字符的个数 C语言实现 vs 2019 span class token macro property span class token directive
  • c语言求1~10的阶乘和

    求1 43 2 43 3 43 43 10 的和 span class token macro property span class token directive keyword include span span class toke
  • C和Cpp区别

    1 输入 xff0c 输出不同 xff08 out xff0c put xff09 c语言 xff1a include lt stdio h gt scanf 34 d 34 amp a printf 34 a 61 d n 34 a cp