C++ 与 C的不同点_基础语法
作者:互联网
基本语法
基本与c完全相似,以下是一些小小的区别
一. 输入和输出上的区别
- printf(“string”) 变为—> cout << " string " << endl;
- scanf(“%x”, variable)** 变为–> cin >> variable
二. 字符串上的区别
-
c风格声明:**char str[] = " ";
-
c++风格声明:**string str = " " ;
注意:C++中所有字符串有关的操作都需要#include< string >头文件
三. 内存四区与new/delete操作
内存四区
-
程序执行前:代码区(存放代码)和全局区(存放全局变量,静态变量和常量(全局常量 + 字符串常量))
------tip:全局区存放两变两常(全局/static/const和字符串) -
程序执行后: 栈区和堆区
-
栈区是编译器自动分配的空间,装取(短命的)各函数运行时要用到的局部变量和形参,因为是包产到户自动分配,故栈区上该函数执行完后该数据以后直接被释放掉
------tip:(故所以函数中不要返回一个局部变量,因为函数执行完毕以后其中储存在栈区中的局部变量的数据会被清空掉,注意清空的是变量中的数据而不是变量自身的内存) -
堆区是程序员使用new分配的空间,堆区上的数据只有等程序完全运行完后其中的数据或者使用delete才会被释放掉
-
new与delete
-
new 在堆区创建内存,返回内存地址
int* p = new int(data)
int* arr = new int[Size]
-
delete 删掉堆区内存 (C语言中的 free)
delete p
delete[] arr
四. 允许引用
-
定义
int& b = a;
,引用又叫起别名,创建一个变量的别名,它们拥有同一块内存,同一个内存中的数据 -
本质
引用就是一个指针常量(该指针的指向的地址不可以更改,但指针指向地址的数据可以更改)
初始化:int& b = a ---> int * const b = &a
赋值 :b = 10 ---> *b = 10
-
注意:
1,int b = a
这是赋值操作,虽然它们有同一个数据,但是内存地址不相同
2,引用需要直接初始化,初始化后不可以更改引用
3,返回变量(非局部变量)引用的函数,可以作为左值直接赋值
int& test();test() = 1000;
4,函数中以引用作为形参,那么函数操作形参时,可以同时改变形参(函数的引用调用) // 可以用const int & b 实现 常数引用,防止误操作
五. 函数拓展
- 允许默认参数
- 允许函数重载
为了提高复用性,函数可以重载(同一函数名可以多次使用)
函数重载的条件:-
不同的参数类型 或 参数个数 或 参数顺序
-
函数名一致,作用域一致
注意:函数返回类型不可作为重载条件 — int func() / void func()
-
面向对象编程
C与C++最大的不同点
内容较多,详情请跳转我的另一篇博客:
C++ 与 C的不同点_面向对象
https://blog.csdn.net/a13352912632/article/details/104068816
标签:函数,int,内存,C++,语法,引用,new,不同点,delete 来源: https://blog.csdn.net/a13352912632/article/details/104030860