大数跨境
0
0

C语言和C++很多人分不清,用关键区别和实战示例帮你彻底搞懂两者差异!

C语言和C++很多人分不清,用关键区别和实战示例帮你彻底搞懂两者差异! 趣聊科技圈
2024-09-10
0
导读:本文将通过通俗易懂的方式,介绍C语言与C++的主要区别,并结合实际代码示例,帮助你更好地理解这两种编程语言的不同之处和各自的特点。

hello,大家好,我是程序员黎明 ,很多人可能不太了解C语言和C++的区别,本期我将带你学会区分它。

其中C语言侧重于面向过程的编程,强调一步步操作;而C++引入了面向对象的思想,让程序结构更加灵活。

1. 面向过程 vs 面向对象

  • C语言面向过程的。意思就是:做事一步步来,像做饭一样,得先洗菜,再切菜,然后炒菜,最后出锅,所有步骤都得自己按顺序来。

  • C++面向对象的。就好比有了厨师,你不用亲自做每一步了,先找个厨师,让他去处理。你只需要告诉厨师做什么就行,比如“做个西红柿炒蛋”,然后剩下的步骤让他自己搞定。

C语言面向过程的例子:

用C语言写一个简单的加法和乘法计算器,我们得一步步来写函数,让程序去按顺序执行:

#include <stdio.h>

int add(int a, int b) {
    return a + b;
}

int multiply(int a, int b) {
    return a * b;
}

int main() {
    int num1 = 5, num2 = 10;

    printf("加法结果: %d\n", add(num1, num2));
    printf("乘法结果: %d\n", multiply(num1, num2));

    return 0;
}

你看,C语言里我们得写addmultiply两个函数,程序是一步步按函数来做事,像流水线一样。

C++面向对象的例子:

C++里,我们可以找个“对象”来干活。比如我们写个“计算器”类,让它来加法和乘法:

#include <iostream>
using namespace std;

class Calculator {
public:
    int add(int a, int b) {
        return a + b;
    }

    int multiply(int a, int b) {
        return a * b;
    }
};

int main() {
    Calculator calc;  // 创建一个计算器对象
    int num1 = 5, num2 = 10;

    cout << "加法结果: " << calc.add(num1, num2) << endl;
    cout << "乘法结果: " << calc.multiply(num1, num2) << endl;

    return 0;
}

在C++里,我们先造了个“计算器”(Calculator类),让它负责处理加法和乘法。你只要创建一个calc对象,然后让它去做事,代码看起来就像是在和对象对话一样。

2. 类和对象

在C++里,你可以通过定义一些东西,比如“车子”的属性和功能,然后根据这个类生成具体的对象(相当于车子的一辆具体实例)。而C语言没有类这种东西,只能通过函数和结构体来模拟。

C++类和对象的例子:

比如,咱们想定义一个“车子”的类,每辆车子都有自己的品牌和速度,还能加速和减速:

#include <iostream>
#include <string>
using namespace std;

class Car {
private:
    string brand;  // 品牌
    int speed;     // 速度

public:
    // 构造函数
    Car(string b, int s) : brand(b), speed(s) {}

    void accelerate(int amount) {
        speed += amount;
        cout << brand << " 加速到 " << speed << " km/h" << endl;
    }

    void brake(int amount) {
        speed -= amount;
        cout << brand << " 减速到 " << speed << " km/h" << endl;
    }
};

int main() {
    Car myCar("Toyota"50);  // 创建一辆丰田车,初始速度50
    myCar.accelerate(20);  // 加速到70
    myCar.brake(30);       // 减速到40

    return 0;
}

这个例子中,我们定义了一个“车子”的类,给它加上“加速”和“减速”的功能,然后通过myCar对象去操作。每辆车子(对象)都有自己不同的品牌和速度。

3. 函数重载

C++还有个挺方便的功能,叫函数重载。就是说你可以写多个同名的函数,但参数不同,C++会自动根据传入的参数选择合适的函数。C语言不支持这一点。

C++函数重载的例子:

#include <iostream>
using namespace std;

int add(int a, int b) {
    return a + b;
}

double add(double a, double b) {
    return a + b;
}

int main() {
    cout << "整数相加: " << add(35) << endl;         // 输出 8
    cout << "浮点数相加: " << add(3.54.2) << endl;   // 输出 7.7

    return 0;
}

C++里,add函数可以同时处理整数和浮点数相加,而不需要取不同名字。这是因为C++会自动识别参数类型,而C语言就不行,得手动区分不同类型的函数。

4. 内存管理

  • C语言里的内存管理是“亲力亲为”的。你申请内存的时候要用malloc,用完后得自己用free手动释放,不然内存会泄漏。

  • C++更智能。你可以定义构造函数(对象创建时自动调用)和析构函数(对象销毁时自动调用),系统帮你自动管理内存,不需要自己手动释放。

C语言手动管理内存的例子:

#include <stdio.h>
#include <stdlib.h>

int main() {
    int *arr = (int*)malloc(5 * sizeof(int));  // 申请内存

    for (int i = 0; i < 5; i++) {
        arr[i] = i + 1;
        printf("%d ", arr[i]);
    }
    
    free(arr);  // 手动释放内存
    return 0;
}

C语言里得手动分配和释放内存,写完程序后你得记得free掉,不然会浪费内存。

C++里自动内存管理的例子:

#include <iostream>
using namespace std;

class Array {
private:
    int* data;
    int size;

public:
    Array(int s) : size(s) {
        data = new int[size];  // 自动分配内存
        for (int i = 0; i < size; i++) {
            data[i] = i + 1;
        }
        cout << "数组创建完成。" << endl;
    }

    ~Array() {
        delete[] data;  // 自动释放内存
        cout << "数组内存已释放。" << endl;
    }

    void print() {
        for (int i = 0; i < size; i++) {
            cout << data[i] << " ";
        }
        cout << endl;
    }
};

int main() {
    Array arr(5);  // 创建数组对象
    arr.print();   // 输出 1 2 3 4 5

    return 0;
}

C++里我们用new来申请内存,然后在析构函数里自动释放内存。这样你不用操心内存的分配和释放,系统帮你管理。

5. 标准库的丰富性

C++的标准库功能比C语言多得多。比如C++有现成的std::vector可以代替C语言里的手动数组管理,std::string可以方便地处理字符串,而C语言就得自己写这些功能。

C++使用标准库的例子:

#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> numbers = {12345};

    numbers.push_back(6);  // 向vector添加一个元素

    for (int num : numbers) {
        cout << num << " ";
    }
    cout << endl;

    return 0;
}

这个例子中,我们用C++的vector(动态数组)代替了C语言里手动申请内存的方式。vector可以自动扩展,也不用我们自己去管理内存,方便很多。

总结:

  • C语言就像是老派做事方式,事事都要自己亲力亲为,程序是一步步地按你写的顺序来执行。
  • c++是进阶版,给你更多高级工具和功能,比如对象、类、函数重载、自动内存管理,方便写复杂程序。

尽管C++功能强大,但C语言简单、直接,适合搞底层开发或者资源有限的场景。好了,本期我们就学到这里啦,我们下期不见不散!


【声明】内容源于网络
0
0
趣聊科技圈
🧐探索科技,发现乐趣。🤩带你玩遍科技好物!
内容 511
粉丝 0
趣聊科技圈 🧐探索科技,发现乐趣。🤩带你玩遍科技好物!
总阅读63
粉丝0
内容511