千家信息网

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 #includeusing 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 #includeusing 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#includeusing 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#includeusing 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语言的区别是什么"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

0