C 语言运算符完全指南 本教程通过示例全面讲解 C 语言算术、自增自减、赋值、关系、逻辑、位运算及其他运算符的用法与优先级。 视频:C 语言算术运算符 运算符是作用于值或变量的符号。例如:+ 执行加法。 C 语言提供丰富运算符执行各种操作。 C 算术运算符 对数值(常量和变量)执行加减乘除等数学运算。 运算符含义 +加法或一元正号 -减法或一元负号 *乘法 /除法 %取模(除法余数) 示例 1:算术运算符 // 算术运算符演示 #include <stdio.h> int main() { int a = 9, b = 4, c; c = a +
C 语言输入输出(I/O)精通 本教程通过清晰示例与最佳实践,带你掌握用 scanf() 获取用户输入、用 printf() 格式化输出的核心技巧。 视频:C 语言获取用户输入 观看配套视频见 scanf() 实战演示。 C 语言输出 printf() 是向控制台输出格式化文本的主要工具。以下举例说明。 示例 1:基本文本输出 #include <stdio.h> int main() { printf(C Programming); return 0; } 输出 C Programming 要点:main() 为程序入口,必须存在。需包含 stdio.
C 语言数据类型详解 本教程透彻剖析 C 语言基础数据类型——int、float、char 等,助你编写精确高效的代码。 视频:C 语言数据类型 C 语言中每个变量声明时须指定数据类型,决定其大小与取值范围。例如: int myVar; myVar 为 int(整型)变量,通常占 4 字节。 基本类型速查表 类型大小(字节)格式说明符 int至少 2,通常 4%d, %i char1%c float4%f double8%lf short int通常 2%hd unsigned int至少 2,通常 4%u long int至少 4,通常 8%ld, %li long lon
C 语言变量、常量与字面量完全指南 本教程涵盖 C 语言变量基础、命名规范、字面量类型及常量声明,助你编写可靠代码。 C 语言变量 变量是存储数据的命名存储位置,每个变量有唯一标识符代表内存地址。 int playerScore = 95; 标识符 playerScore 存储 int 值 95。变量可变,执行期间值可改变。 char ch = a; // 后续代码中 ch = l; 变量命名规则 允许字符:字母(A-Z、a-z)、数字(0-9)、下划线。 首字符必须是字母或下划线。 语言不限长度,但部分编译器截断超 31 字符的名字。 提示: 使用 first
C 语言关键字与标识符完全指南 本指南基于多年实战经验,梳理 C 语言核心要素——保留关键字与标识符命名规范,助你写出规范、可维护的 C 代码。 字符集 字符集定义 C 程序中标识符及其他部分可用的字符。 字母 大写: A B C … X Y Z 小写: a b c … x y z C 语言变量和函数名均区分大小写。 数字 0 1 2 3 4 5 6 7 8 9 特殊字符 C 语言特殊字符 ,<>._ ();$: %[]#? &{} ^!*/| -\~+ 空白字符包括空格、换行、制表符、回车、换页符。 C 语言关键字 关键字是编译器识别的保
C++ 类模板实战指南 本教程通过清晰的真实案例,讲解如何利用 C++ 类模板编写灵活、类型无关的泛型代码。 模板是 C++ 泛型编程基石。它们让你创建可复用组件,适配任意数据类型,提升代码清晰度并减少重复。C++ 提供两种模板:函数模板和类模板。 函数模板 类模板 类模板让你定义单个类适配多种数据类型,不仅缩短代码,还简化维护。 声明类模板 类模板以 template 关键字开始,后跟尖括号包裹的模板参数列表,随后是类定义: template <class T> class MyClass { private: T var; public:
C++ 虚函数完全指南 本教程通过代码示例详解 C++ 虚函数的目的、多态机制、override 关键字用法及实际应用场景。 虚函数是预期被派生类重写的基类成员函数。声明为 virtual 后,即使通过基类指针/引用访问,也会调用最派生类的实现。 若基类成员非虚,通过基类指针调用永远执行基类版本,无论实际对象类型。例如: class Base { public: void print() { /* 基类实现 */ } }; class Derived : public Base { public: void print() { /* 派生实现 */ } }; 下面程序中,
C++ 友元函数与友元类:突破访问控制的利器 本教程通过清晰示例演示如何声明和使用 C++ 友元函数与友元类,实现跨类边界的受控访问。 数据隐藏是面向对象编程基石,防止外部代码直接访问类的私有成员。受保护成员仅对派生类可见,外部同样不可见。 考虑以下示例: class MyClass { private: int member1; }; int main() { MyClass obj; // 错误!无法从外部访问私有成员 obj.member1 = 5; } 尽管有此限制,C++ 提供友元函数机制,可绕过常规访问控制,操作类的私有/受保护数据。 友元类
C++ 继承模式全解析:多重、多级与层次继承 本教程通过实战代码示例,系统讲解 C++ 三种核心继承模式:多重继承、多级继承与层次继承。 继承是面向对象编程的基石,让开发者能从现有类创建新类,复用属性与行为。 下面详细探讨 C++ 中三种关键继承模式。 C++ 多级继承 多级继承中,类从另一个派生类派生,形成链式结构直到基类。 class A { /* 基类实现 */ }; class B : public A { /* B 继承自 A */ }; class C : public B { /* C 继承自 B */ }; B 继承 A,C 继承 B,形成垂直继承链。 示例 1
C++ 函数重写详解 本指南通过清晰示例、最佳实践与分步演示,深度剖析 C++ 函数重写机制,助你编写生产级多态代码。 为什么函数重写很重要 面向对象编程中,继承让派生类扩展或修改基类行为。当基类与派生类声明同名同参数成员函数时,派生类实现会重写基类版本。通过派生类对象调用该函数,执行的是重写后的版本。 示例 1:基础重写 #include <iostream> using namespace std; class Base { public: void print() { cout << Base Function << endl; } }
C++ 三种继承方式深度解析:public、protected 与 private 本教程通过代码示例与访问性对比表,详细阐述 C++ public、protected、private 继承对基类成员在派生类中的可见性影响。 C++ 继承中,派生类可用不同访问模式从基类派生: class Base { .... }; class Derived : public Base { .... }; public 表示公有继承。也可用 protected 或 private 继承。这三个关键字在继承上下文中称为访问说明符。 三种继承方式的成员可见性规则 public 继承:基类 pu
C++ 继承完全指南 本教程通过实例系统讲解 C++ 继承机制,包括基类/派生类关系、protected 成员、访问模式、函数重写及多重继承基础。 继承是 C++ 面向对象编程的核心特性之一。它允许从现有类(基类/父类)创建新类(派生类/子类)。 派生类继承基类的特性,并可添加自身特有功能。例如: class Animal { // eat() 函数 // sleep() 函数 }; class Dog : public Animal { // bark() 函数 }; Dog 从 Animal 派生。因为继承关系,Dog 可访问 Animal 的成员。 注
C++ 动态内存管理:new 与 delete 专家级实战指南 本指南通过真实案例详解 C++ 堆内存分配与释放,涵盖 new/delete、new[]/delete[]、对象动态创建及智能指针现代替代方案。 C++ 赋予开发者运行时分配内存的能力——即动态内存分配。与 Java、Python 等托管语言不同,C++ 不自动回收堆内存,程序员必须显式释放。 new 与 delete 运算符是手动内存管理的基石,定义于 C++ 标准库。 new 运算符 new 在堆上分配内存块,返回指向首字节的指针: // 声明 int 指针 int* pointVar; // 动态分配一个 int p
C++ 引用传参与指针传参:交换变量值的实战对比 本指南通过交换两数值的经典案例,对比 C++ 引用与指针两种传参方式的语法差异、底层机制及适用场景。 C++ 函数默认按值传参:函数接收原数据的副本。这保护了原变量,但对大型对象效率低,且无法修改调用者数据。 引用传参解决了这两个问题:函数接收原变量的引用(别名),可直接操作原数据。C++ 提供两种等价方式:引用语法与原始指针。掌握两者能让你更灵活地处理内存。 // 按值传参 void func1(int numVal) { /* ... */ } // 按引用传参(C++ 引用语法) void func2(int &numRef) {
C++ 指针与数组 本教程通过实例详解指针与数组的内在联系,包括指针算术、数组名退化、多维数组指针等核心知识点。 C++ 指针不仅能存储单个变量地址,也能存储数组元素地址。例如: int *ptr; int arr[5]; ptr = arr; // 将数组首元素地址赋给指针 此处 ptr = arr; 等价于 ptr = &arr[0];。数组名 arr 在大多数上下文中会退化为指向首元素的指针。 其余元素地址分别为 &arr[1]、&arr[2]、&arr[3]、&arr[4]。 指向任意数组元素 若 ptr 指向首元素,则 ptr + 3 指向第 4 个元素: int *pt
C++ 指针深度解析 本教程通过图解与代码实例,全面讲解 C++ 指针的内存模型、声明、解引用、常见陷阱及最佳实践。 在 C++ 中,指针是存储另一变量内存地址的变量。指针实现了直接内存操作、动态内存分配和高效数据处理。 C++ 中的地址 对于变量 var,表达式 &var 返回其内存地址。例如: 示例 1:打印变量地址 #include <iostream> using namespace std; int main() { int var1 = 3; int var2 = 24; int var3 = 17; cout << A
C++ 运算符重载完全指南 本教程通过丰富示例,系统讲解 C++ 运算符重载的语法、一元/二元运算符重载技巧及工程实践注意事项。 在 C++ 中,我们可以改变运算符对用户自定义类型(如类对象、结构体)的行为,这被称为运算符重载。例如, 假设我们从 Complex 类创建了三个对象 c1、c2 和 result,用于表示复数。 通过运算符重载,我们可以重新定义 + 运算符,使其直接支持复数相加: result = c1 + c2; 而不必调用类似 result = c1.addNumbers(c2); 这样的成员函数。这让代码更直观、易读。 注意: 运算符重载不能用于基本数据类型(如
C++ 函数中传递和返回对象的完整指南 本教程通过实例和最佳实践,详细讲解如何在 C++ 函数中传递对象以及从函数返回对象。 示例 1:向函数传递对象 // C++ 程序:计算两名学生的平均分 #include <iostream> using namespace std; class Student { public: double marks; // 成绩 // 构造函数初始化成绩 Student(double m) : marks(m) {} }; // 函数接受两个 Student 对象作为参数(按值传递) void cal
理解C++构造函数 本教程深入讲解C++构造函数——它们是什么、为何重要、如何实现默认、参数化和拷贝构造函数,附清晰示例。 构造函数是在对象实例化时自动运行的特殊成员函数。在C++中,构造函数与类同名且不指定返回类型。 class Wall { public: // Constructor Wall() { // initialization code } }; 构造函数必须: 与类同名。 不声明返回类型。 可访问(通常为public)。 默认构造函数 无参数的构造函数称为默认构造函数。上述Wall()即为一例。 示例1:默认构造函数
C++类与对象 通过清晰示例与最佳实践,掌握如何在C++中使用类和对象封装数据与行为。 为什么使用类? 前几课探讨了函数和变量。随着项目增长,将相关数据和操作分组对可维护性和清晰度至关重要。类让你将数据成员和成员函数捆绑为单一逻辑单元,实现面向对象编程(OOP)——现代C++设计的基石。 举例:房间 设想一个长方形房间。你需要存储其长度、宽度和高度,并计算面积和体积。用类可将这些紧密耦合: class Room { public: double length; double breadth; double height; double calculat
C语言