「C++系列」C++ 基本语法

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站:人工智能教程


在这里插入图片描述

一、C++ 基本语法

C++ 是一种强大的编程语言,它支持多种编程范式,包括面向过程、面向对象和泛型编程。以下是 C++ 的一些基本语法元素:

1. 预处理指令

预处理指令以 # 开头,并在编译之前处理。例如:

#include <iostream>
#define PI 3.14159

2. 数据类型

C++ 支持多种数据类型,包括基本数据类型(如 int, float, double, char, bool)和复合数据类型(如数组、结构体、类、联合体等)。

3. 变量和常量

变量用于存储数据,其值可以在程序执行过程中改变。常量在程序执行期间其值不能被改变。

int x = 10; // 变量
const int y = 20; // 常量

4. 运算符

C++ 支持多种运算符,如算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符等。

int a = 5, b = 10;
int sum = a + b; // 使用算术运算符

5. 控制流语句

  • 条件语句if, else if, else
  • 循环语句for, while, do-while
  • 跳转语句break, continue, goto(虽然 goto 在现代编程中很少使用)
for (int i = 0; i < 10; i++) {
    // 循环体
}

6. 函数

函数是执行特定任务的代码块。在 C++ 中,你可以定义自己的函数,并在需要时调用它们。

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

int main() {
    int sum = add(5, 3);
    std::cout << sum << std::endl;
    return 0;
}

7. 数组

数组是用于存储相同类型元素的固定大小的集合。

int arr[5] = {1, 2, 3, 4, 5};

8. 指针和引用

指针是一个变量,其值是一个内存地址。引用是变量的别名。

int x = 10;
int* ptr = &x; // ptr 是一个指向 x 的指针
int& ref = x; // ref 是 x 的引用

9. 结构体和类

结构体和类是 C++ 中用于创建用户定义数据类型的工具。结构体主要用于封装一组相关的变量(数据成员),而类则包含数据成员和成员函数(方法)。

struct Person {
    std::string name;
    int age;
};

class MyClass {
public:
    void myFunction() {
        // ...
    }
};

10. 输入/输出

C++ 使用流对象(如 std::cinstd::cout)进行输入/输出操作。

int num;
std::cout << "Enter a number: ";
std::cin >> num;
std::cout << "You entered: " << num << std::endl;

11. 异常处理

C++ 支持异常处理机制,允许程序在发生错误时优雅地处理这些情况。

try {
    // 可能会抛出异常的代码
} catch (const std::exception& e) {
    // 处理异常的代码
    std::cerr << "Exception caught: " << e.what() << std::endl;
}

12. 命名空间

命名空间用于避免命名冲突,特别是在使用大型库时。例如,std 是 C++ 标准库的命名空间。

using namespace std; // 使用 std 命名空间中的所有名称

二、C++ 程序结构

C++程序结构通常涉及多个方面,包括基本的程序流程结构、文件结构以及编译预处理命令等。以下是对C++程序结构的详细解释:

1. 程序流程结构

C++支持三种基本的程序流程结构:

  1. 顺序结构:程序按照代码的书写顺序依次执行,不发生跳转。
  2. 选择结构:根据条件是否满足,有选择地执行相应的功能。常见的选择结构包括if语句、switch语句等。
    • if语句:用于执行满足条件的语句,可以是单行或多行结构,也可以进行嵌套使用。
    • switch语句:根据表达式的值,选择执行相应的case语句块。
  3. 循环结构:根据条件是否满足,循环多次执行某段代码。C++提供了三种主要的循环结构:
    • while循环:只要循环条件的结果为真,就执行循环语句。
    • do...while循环:先执行一次循环语句,再判断循环条件。
    • for循环:通过指定起始表达式、条件表达式和末尾循环体,控制循环的执行。

2. 文件结构

在C++中,一个项目通常至少划分为三个文件:

  1. 类定义文件(*.h文件):包含类的声明和可能的内联成员函数定义。这些文件通常使用头文件保护来防止多次包含同一个头文件导致的重复定义。
  2. 类实现文件(*.cpp文件):包含类成员函数的实现。这些文件实现类定义文件中声明的函数。
  3. 类的使用文件(*.cpp,主函数文件):程序的入口点(main函数)通常位于此文件中,以及其他使用类定义文件的代码。

3. 编译预处理命令

编译预处理命令在编译源程序之前对程序文本进行预处理,主要包括以下几个方面:

  • 文件包含指令:使用#include指令将另一个源文件嵌入到当前源文件中。这通常用于包含头文件。
  • 宏定义:使用#define定义常量或宏,使用#undef取消定义。在C++中,还可以使用内联函数来替代带参数的宏定义。
  • 条件编译:根据条件选择性地编译某段代码,常用的指令包括#if#else#elif#endif#ifdef#ifndef

4. 命名空间

C++使用命名空间来避免命名冲突,特别是在使用大型库时。例如,std是C++标准库的命名空间。使用using namespace std;语句可以在当前文件中使用std命名空间中的所有名称,而不需要每次都加上std::前缀。

5. 标准库

C++标准库提供了大量的类和函数,用于执行各种常见的任务,如输入/输出、字符串处理、容器和算法等。这些类和函数通常定义在不同的头文件中,如<iostream><string><vector>等。

综上所述,C++程序结构涵盖了程序流程结构、文件结构、编译预处理命令、命名空间和标准库等多个方面。掌握这些基础知识是编写高质量C++程序的关键。

三、C++ 标识符

在 C++ 中,标识符是用于标识变量、函数、类、对象、类型别名等实体的名称。标识符的命名有一些规则和最佳实践,以确保代码的可读性和可维护性。

1. 标识符的命名规则

  1. 必须以字母、下划线_或美元符号$开头:标识符的第一个字符不能是数字。
  2. 后续字符可以是字母、数字、下划线或美元符号:这意味着你可以使用字母、数字、下划线和美元符号来组合标识符的名称。
  3. 区分大小写:C++ 是大小写敏感的,因此 variableVariable 是两个不同的标识符。
  4. 不能是 C++ 关键字:你不能使用 C++ 的关键字(如 int, double, if, else 等)作为标识符。

2. 标识符的命名约定

除了上述规则外,还有一些常见的命名约定可以帮助你编写更易于理解的代码:

  1. 驼峰命名法(CamelCase):对于类名、结构体名、枚举名等类型名,通常使用大驼峰命名法(也称为 PascalCase),即每个单词的首字母都大写,如 MyClass, MyStruct, MyEnum。对于变量名和函数名,通常使用小驼峰命名法,即第一个单词的首字母小写,后续单词的首字母大写,如 myVariable, myFunction
  2. 下划线命名法(snake_case):有时也使用下划线分隔单词的方式命名变量和函数,如 my_variable, my_function。这种命名方式在 C++ 中不如驼峰命名法常见,但在某些项目或上下文中可能会使用。
  3. 前缀或后缀:在某些情况下,你可能希望使用特定的前缀或后缀来标识标识符的类型或用途。例如,可以使用 m_ 前缀来标识类的成员变量(如 m_myVariable),或使用 _t 后缀来标识类型别名(如 size_t)。然而,这种命名方式并不是强制性的,并且在使用时应谨慎,以避免过度使用或混淆。
  4. 避免使用特殊字符:尽管 C++ 允许在标识符中使用美元符号 $,但在实际编程中应尽量避免使用它,因为它可能导致与其他编程环境或工具的兼容性问题。
  5. 保持简洁和描述性:尽量使用简洁且描述性的名称来命名标识符。过长的名称会增加代码的复杂性,而过于简短的名称则可能导致难以理解。
  6. 遵循项目或团队的命名约定:在某些项目或团队中,可能有特定的命名约定需要遵循。确保你了解并遵循这些约定,以保持代码的一致性。

四、C++ 关键字

C++关键字是在C++编程语言中用于特定语法功能的预定义标识符。这些关键字具有特定的含义,并且不能用作变量名、函数名或其他标识符。以下是C++中一些关键字的分类和示例:

1. 基本关键字

这些是最常用的关键字,涵盖了变量类型、流程控制等方面。

  • 变量类型:
  • int
  • char
  • double
  • float
  • void
  • 流程控制:
  • if
  • else
  • while
  • for
  • do
  • break
  • continue
  • switch
  • case
  • default
  • return

2. 数据类型关键字

用于声明特定数据类型的关键字。

  • 数据类型关键字:
  • signed
  • unsigned
  • long
  • short
  • enum
  • struct
  • union
  • bool
  • true
  • false

3. 存储类型关键字

用于指定变量存储方式的关键字。

  • 存储类型关键字:
  • auto(自动类型推断)
  • extern(声明外部变量)
  • register(声明寄存器变量)
  • static(声明静态变量)

4. 其他关键字

这些关键字用于特定的语言特性或功能。

  • 其他关键字:
  • const(声明常量)
  • sizeof(计算数据类型长度)
  • volatile(提醒编译器变量可能随时改变)
  • new(分配动态内存)
  • delete(释放动态内存)
  • explicit(阻止隐式转换)
  • namespace(声明命名空间)
  • friend(声明类的友元)
  • mutable(类中的非静态和非常量数据成员可修改)
  • typeid(运行时类型信息)
  • trycatchthrow(异常处理)
  • inline(声明内联函数)
  • template(模板声明)
  • typename(模板编程中指定类型名)
  • static_assert(编译时断言)
  • noexcept(声明异常处理规则)
  • constexpr(声明编译时常量)
  • alignas(设置内存对齐方式)
  • decltype(类型推导)
  • reinterpret_cast(重新解释类型转换)
  • dynamic_cast(动态类型转换)
  • static_cast(静态类型转换)
  • const_cast(去除常量性)
  • goto(无条件跳转)
  • asm(内嵌汇编代码)

五、相关链接

  1. Visual Studio Code下载地址
  2. Sublime Text下载地址
  3. 「C++系列」C++简介、应用领域
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

·零落·

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值