C++:C、C++区别

1. 输入、输出

C语言:

头文件:#include <stdio.h>
输入:scanf
输出:printf

C++

头文件:#include <iostream>
		using namespace std;  //打开std命名空间
输入:cin  //预定义好的输入流对象名,与提取运算符 >> 配合使用,从键盘上提取
输出:cout //预定义好的输出流对象名,与流插入运算符 << 配合使用, 换行使用endl

cin与scanf的区别

scanf是格式化输入函数,cin是标准化输入流对象,scanf对类型有要求,cin不区分类型
例:	int a;
	char ch;
	scanf("%d %c",&a,&ch); 
	cin>>a>>ch;
注意:cin不允许cin>>a,ch,必须每一个变量前都要有提取符>>

2. 常量的区别

C语言

#define PI 3.14  //宏常量
#define MAX 10
enum {
    
    LEN = 10}; //枚举常量

C++:

const int max = 10; //常变量

define与const区别

define 定义的是宏常量
	1. 宏常量在预编译的时候进行替换
	2. 宏常量不分配空间
	3. 宏常量并没有类型

const 修饰的是常变量
	1. 常变量在编译时进行替换
	2. 常变量分配空间
	3. 常变量会有类型的检查

const在编译时进行替换例子

int main()
{
    
    
	const int a = 10;
	int b = 0;
	int *p = (int*)&a;
	*p = 100;
	b = a;
	cout << " a = " << a << " b = " << b << " *p = " << *p << endl;
}

在这里插入图片描述
在这里插入图片描述
常变量与宏有一拼,常变量在编译阶段进行替换,宏在预编译时替换

3. 引用

&的使用:

  1. 数字之间:位运算与 : 1 & 0 --> 0
  2. 变量名前取地址:&a
  3. 类型与标识符中间:引用: int &c = a;

引用&:就是别名/外号, 一旦引用初始化为某个变量,就可以使用引用名称直接使用该变量,就是给该变量起了个别名

引用的特点

  1. 没有空引用
  2. 定义引用时必须进行初始化
  3. 没有二级引用

引用的使用

C语言使用指针交换a,b

void Swap_c(int *pa, int *pb)
{
    
    
	int tmp = *pa;
	*pa = *pb;
	*pb = tmp;
}

C++使用引用交换a,b

void Swap_cpp(int &a, int &b)//在函数中对a,b的交换,就是对实参的交换
{
    
    
	int tmp = a;
	a = b;
	b = tmp;
}

C中使用指针间接交换了a,b;而C++使用引用直接操纵实参进行了交换

4. 函数重载

C语言通过函数名来区分函数,重载函数在c中编译是通不过的

C++支持函数的重载,可以用来作为重载函数的依据有:

  1. 参数类型不同
  2. 参数个数不同

注意:函数的返回值不能区分重载函数,因为编译器不能通过函数返回值来识别调用哪一个函数,现有的编译器无法达到对返回类型的识别

5. 默认形参

C++函数的形参可以带默认值,参数列表的默认值从右向左依次给,不能跳着给

调用函数时,实参是从左向右依次给,不能跳着给

void fun(int a, int b, int c = 0, int d = 0)
{
    
    
}
int main()
{
    
    
	fun(12,23);//给实际参数的时候是从左向右依次给,不能跳着给
	//fun(12, ,33);错误
}

6. 堆区开辟空间

C语言

int *p = (int *)malloc(sizeof(int));
free(p);

C++:

int *s = new int;//开辟一个整型空间
int *p = new int(10);//开辟并初始化
delete s; 

开辟数组空间:

int n;
cin>>n;
int *p = (int*)malloc(sizeof(int)*n);//C语言
int *s = new int[n];//C++
int *t = new int[n](100);//开辟并初始化,C99标准
free(p); p = NULL;
delete []s;
delete []t;

猜你喜欢

转载自blog.csdn.net/huifaguangdemao/article/details/109258013