C++与C语言的区别是什么
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇"C++与C语言的区别是什么"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"C++
千家信息网最后更新 2025年11月08日C++与C语言的区别是什么
这篇"C++与C语言的区别是什么"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"C++与C语言的区别是什么"文章吧。
1. 结构体区别
1.1. 类型上不再需要struct关键字,直接用结构体名即可
#include#include using namespace std;struct MM{ char name[20]; int age;};int main(){ struct MM girl; MM mm;//C++中不需要struct关键字 return 0;}
1.2. C++结构体中允许函数存在
在结构体中声明,在结构体外实现,当然可以直接在结构体中实现
结构体中函数访问数据,是可以直接访问
学会调用,和数据成员方式时一样的
对象(结构体变量).成员
对象指针->成员
(*对象指针).成员
C++在没有写构造函数和权限限定的时候,用法和C语言的用法是一样
#include#include using namespace std;struct MM{ //属性 //数据成员 char name[20]; int age; //行为(方法) //成员函数 void print() { cout << name << "\t" << age << endl; } void printData();//在结构体中声明,在外面实现 int& getAge() { return age; }};//结构体名限定,就是告诉别人这个函数来自哪里void MM::printData(){ cout << name << "\t" << age << endl;}//结构体中的变量必须要通过结构体变量(结构体指针)访问//c++结构体中的函数访问属性,可以直接访问int main(){ struct MM girl = {"小芳",28}; MM mm = {"小丽",24};//C++中不需要struct关键字 girl.print(); (&mm)->printData(); MM* p = &mm; p->printData(); p->getAge() = 84; p->printData(); p->age = 1991; p->printData(); return 0;}
2. 动态内存申请
C语言的动态内存申请
malloc 不带初始化 ,calloc 带初始化,realloc 重新申请
free 释放
C++的动态申请
new(申请)和delete(释放)
单个变量内存申请
数组的动态申请
结构体内存申请
例子:单个变量内存申请和数组的动态申请
#include#include using namespace std;void testNoeMemory(){//申请不做初始化 int* pInt = new int; *pInt = 123; cout << *pInt << endl; char* pChar = new char; *pChar = 'A'; cout << *pChar << endl;//申请内存做初始化 ()给单个数据做初始化 int* pNum = new int(134); cout << *pNum << endl; delete pInt; pInt = nullptr; delete pChar; pChar = nullptr; delete pNum; pNum = nullptr;}void testArrayMerrmory(){ //一维数组 //1、不带初始化 //长度可以是h变量,只要值就可以 int* pInt = new int[3];//等效产生了 int pInt[3]的数组 char* pstr = new char[15]; strcpy_s(pstr, 15, "I love you"); cout << pstr << endl; //带初始化的 一堆数据用{} int* pNum = new int[3]{1, 2, 3}; for (int i = 0; i < 3; i++) { cout << pNum[i] << " "; } cout << endl; delete[] pNum; char* str = new char[20]{'A', 'B', '\0'}; cout << str << endl; delete[] str; str = nullptr; str = new char[20]{"Ilove you"}; cout << str << endl; delete[] str; str = nullptr; delete[] pInt;//数组的指针 不需要大小 //释放只有两种形式 delete 指针 delete [] 指针 //delete [][] p 没有这种写法 pInt = nullptr;}int main(){ testNoeMemory(); return 0;}
例子:结构体内存申请
#include#include using namespace std;void testNoeMemory(){//申请不做初始化 int* pInt = new int; *pInt = 123; cout << *pInt << endl; char* pChar = new char; *pChar = 'A'; cout << *pChar << endl;//申请内存做初始化 ()给单个数据做初始化 int* pNum = new int(134); cout << *pNum << endl; delete pInt; pInt = nullptr; delete pChar; pChar = nullptr; delete pNum; pNum = nullptr;}void testArrayMerrmory(){ //一维数组 //1、不带初始化 //长度可以是h变量,只要值就可以 int* pInt = new int[3];//等效产生了 int pInt[3]的数组 char* pstr = new char[15]; strcpy_s(pstr, 15, "I love you"); cout << pstr << endl; //带初始化的 一堆数据用{} int* pNum = new int[3]{1, 2, 3}; for (int i = 0; i < 3; i++) { cout << pNum[i] << " "; } cout << endl; delete[] pNum; char* str = new char[20]{'A', 'B', '\0'}; cout << str << endl; delete[] str; str = nullptr; str = new char[20]; cout << str << endl; delete[] str; str = nullptr; delete[] pInt;//数组的指针 不需要大小 //释放只有两种形式 delete 指针 delete [] 指针 //delete [][] p 没有这种写法 pInt = nullptr;}struct MM{ char* name; int age; void printMM() { cout << name << "\t" << age << endl; }};void testStructMerrory(){ //new一个对象 int* p = new int(123); //结构体只能用大括号 MM* pMM = new MM; //结构体中指针,要做二次申请,才能strcpy,或者赋值 pMM->name = new char[20]; strcpy_s(pMM->name, 20, "李四"); pMM->age = 188; pMM->printMM(); //申请的顺序和释放的顺序是相反的 delete[]pMM->name; delete pMM;}int main(){ //testNoeMemory(); testStructMerrory(); return 0;}
3. 内存池
允许大家申请一段内存,共给程序使用,综合管理内存
4. string类型
只需要知道有这种用法即可,不需要大家深究为什么,因为string本身是一个类,需要讲完类的大部分知识,才能追究为什么这样做。自己也可以封装一个string 类型
string创建
+ 带初始化
+ 不带初始化
+ 通过另一个字符串创建
string基本操作
+ 拷贝
+ 赋值
+ 连接
+ 比较
C++string与C语言string.h
string 其他函数操作
以上就是关于"C++与C语言的区别是什么"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
结构
内存
指针
数组
数据
语言
C++
函数
成员
内容
动态
变量
单个
对象
知识
类型
例子
关键
关键字
写法
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
spyder读取不了数据库
北京网络技术服务采购
上海圆汇网络技术有限公司
为什么老是服务器断开
确保七十周年网络安全
上海网信办网络安全
泉州软件开发公司在
应用服务器怎么收费
嘉定区创新数据库服务报价行情
删除数据库视图语法
网络安全防线不断加强
嘉定区通信网络技术常见问题
计算机四级网络技术考了有没有用
linux服务器开启监听命令
java全局处理数据库异常
方舟在别人服务器怎么用代码
数据库依赖操作有哪些
软件开发工具ider
数据库防火墙内容
安卓软件开发需要什么技术
观网络安全微课有感
安徽工控软件开发定做
软件开发各阶段工作分工
数据库技术答案山东联盟
西安未来核心网络技术
mysql建立连接数据库
人机交互与网络安全
如何查看电脑软件开发者
网络安全价值机会
吉大网络技术实习终稿