当前位置: 首页 > news >正文

(C++)C语言和C++的关系和区别(C++教学)(C语言)

C语言与C++的区别和关系(新手向指南)

一、基本关系(父子关系)
  1. 历史渊源

    • C语言:1972年由丹尼斯·里奇发明

    • C++:1983年由本贾尼·斯特劳斯特卢普在C语言基础上扩展而来

    • 简单说:C++是C语言的超集(大部分C代码可以直接在C++中运行)

  2. 继承关系

二、核心区别对比表
特性C语言C++新手理解
编程思想面向过程面向对象 + 泛型编程C:按步骤做菜
C++:定义厨师和菜谱
文件扩展名.c.cpp/.cc/.hpp文件后缀不同
Hello Worldprintf("Hello")cout << "Hello"C用函数,C++用对象
内存管理malloc/freenew/delete + 智能指针C++更安全方便
函数特性不支持重载支持函数重载C++:同名函数做不同的事
数据结构结构体(struct)类(class = 结构体 + 方法)C++给结构体"添加技能"
三、C++独有的重要特性
  1. 类与对象(面向对象核心)

    // C++示例:定义一个"狗"类
    class Dog {
    public:// 构造函数(创建对象时自动调用)Dog(string name) : name(name) {}// 成员函数(方法)void bark() {cout << name << "说:汪汪!" << endl;}private:string name;  // 成员变量
    };int main() {Dog myDog("阿黄");  // 创建对象myDog.bark();       // 输出:阿黄说:汪汪!
    }
  2. 函数重载(同名不同功能)

    // C++允许同名函数
    void print(int num) { cout << "整数:" << num; }
    void print(string text) { cout << "文本:" << text; }print(10);     // 调用第一个
    print("你好"); // 调用第二个
  3. 标准模板库(STL - 强大工具箱)

    #include <vector>
    #include <algorithm>vector<int> nums = {3, 1, 4}; // 动态数组
    sort(nums.begin(), nums.end()); // 排序(1,3,4)
四、内存管理对比
操作C语言C++
申请内存int* p = malloc(sizeof(int))int* p = new int
释放内存free(p)delete p
特点手动计算大小自动计算类型大小
安全风险易忘记释放/计算错误相对更安全
五、新手学习建议
  1. 学习路径

  2. 选择建议

    • C语言如果:

      • 开发操作系统/嵌入式系统

      • 理解计算机底层原理

      • 打牢编程基础

    • C++如果:

      • 开发游戏/桌面应用

      • 做高性能服务端程序

      • 学习面向对象思想

  3. 经典比喻

    C语言像是手动挡汽车 - 需要自己控制所有细节
    C++像是自动挡汽车 - 提供更多自动化功能,但也能手动控制

六、简单类比理解
生活场景C语言实现C++实现
喝水走到饮水机->接水->喝定义"人"类,包含"喝水"方法
计算器写函数add(), sub()创建Calculator类,封装所有操作
图书管理用结构体数组存书用vector<Book>容器管理
七、总结一句话

C语言是基石,C++是升级版建筑

  • 学C语言掌握编程本质

  • 学C++开发复杂高效程序
    两者配合使用效果最佳!

 练习:

// 输入任意一个整型十进制,将其转换为8进制和16进制
#include <iostream>
#include <iomanip>
using namespace std;//使用命名空间int main(){int a;cout<<"请输入任意的十进制数:"<<endl;//输出,原代码为std::cout,此处std::可省略cin>>a;//输入,原代码为std::cin,此处仍然省略cout<<"8进制结果为:"<<oct<<a<<endl<<"16进制结果为:"<<hex<<a<<endl;//endl换行符“<<”是操作符,意思是从前往后依次操作,“oct是8进制操纵符,dec是10进制操纵符,hex是16进制操纵符”
}

可以看到C++中,使用简单的操纵符就可以实现不同类型的整形输出形式,而在C语言中:

#include <stdio.h>int main() {int num;printf("请输入一个十进制整数:");scanf("%d", &num);// 八进制输出(带前缀0)printf("八进制结果:0%o\n", num);// 十六进制输出(带前缀0x,小写字母)printf("十六进制结果:0x%x\n", num);return 0;
}

只能使用标准库来实现,大家通过这个小练习也可以发现C语言和C++的区别挺大的,后面也会接着教大家学习C++相关内容;

注:该代码是本人自己所写,可能不够好,不够简便,欢迎大家指出我的不足之处。如果遇见看不懂的地方,可以在评论区打出来,进行讨论,或者联系我。上述内容全是我自己理解的,如果你有别的想法,或者认为我的理解不对,欢迎指出!!!如果可以,可以点一个免费的赞支持一下吗?谢谢各位彦祖亦菲!!!!!

相关文章:

  • 59-Oracle 10046事件-知识准备
  • Spring Boot微服务架构实战:从单体到分布式的完整转型指南
  • 外卖之后再度进军酒旅,京东多线出击的逻辑是什么?
  • 鸿蒙NEXT-鸿蒙老版本迁移最新版本(API19,modelVersion5.1.1)
  • Spring Boot的自动装配和自动配置
  • MCU量产高效烧录:BootLoader与App合并技巧
  • 深入解析 C++ 中的红黑树:原理、实现与应用
  • 跨平台轻量级RTSP服务:重构内网超低延迟直播体验
  • “氢键本征型材料 + 柔性电容应变片”方案分析
  • 跟着AI学习C# Day26
  • ZooKeeper 3.9.2 集群安装指南
  • python web开发-Flask数据库集成
  • pikachu靶场通关笔记42 不安全的URL重定向
  • SpringBoot电脑商城项目--显示购物车列表
  • 【无标题】使用 Chocolatey 安装 WSL 管理工具 LxRunOffline
  • win环境使用openssl创建p12证书
  • emscripten 编译 wasm 版本的 openssl
  • 启动hardhat 项目,下载依赖的npm问题
  • 【系统问题】解决 Windows10 点击任务栏的音量图标(喇叭)无效
  • 文生视频(Text-to-Video)
  • 网站建设功能需求/网络营销的方法有哪些
  • 湖州网站制作公司/seo工具查询
  • 织梦网站采集如何做/郑州网络推广报价
  • 怎么用vs做网站开发/seo优化培训
  • 招商网站建设方案/网店运营怎么学
  • 优秀的集团网站/最好用的系统优化软件