C++ 存储类
在 C++ 中,存储类(Storage Class)用于指定变量或函数的存储位置、作用域和生命周期。C++ 支持以下几种存储类:1. auto 存储类auto 存储类用于自动推断变量的数据类型。在 C++11 之前,auto 仅限于自动推断函数的返回类型。auto x = 5; // 自动推断为 int 类型auto y = 3.14; // 自动推断为 double 类型2. register 存储类register 存储类用于声明寄存器变量,它告诉编译器将该变量存储在寄存器中,以便快速访问。然而,现代编译器通常会忽略 register,因为它们能够自动进行优化。register int counter;3. static 存储类static 存储类用于在程序的整个生命周期内保持变量的存在,并在程序执行期间保持其值。静态变量在程序首次运行时初始化,仅初始化一次。3.1 静态局部变量void exampleFunction() { static int count = 0; // 静态局部变量 count++;}3.2 静态全局变量static int globalVar ...
C++ 修饰符类型
在 C++ 中,有一些修饰符类型(Modifier Types)可以用于修改变量的含义或行为。以下是一些常见的修饰符类型:1. const 修饰符const 用于声明常量,表示变量的值不能被修改。const int maxAttempts = 3;const double pi = 3.14;2. volatile 修饰符volatile 告诉编译器,该变量的值可能会在程序的控制之外被修改,因此不应进行优化。通常用于表示硬件寄存器、中断服务程序等。volatile int sensorValue = 0;3. mutable 修饰符mutable 用于修饰类的成员变量,表示即使在一个 const 对象中,该成员变量仍然可以被修改。class Example {public: mutable int counter; // mutable 成员变量 // ... void increment() const { counter++; }};4. static 修饰符static 用于修饰变量、函数或类成员,具体的含义取决于它所修饰的对象。4.1 静态...
C++ 常量
在 C++ 中,常量是一种不可变的值,其值在程序执行过程中不能被修改。常量提供了一种保护数据不被意外修改的方式。C++ 中有两种主要的常量类型:字面常量**和**符号常量。1. 字面常量字面常量是程序中直接使用的常量值,可以分为整数常量、浮点数常量、字符常量和字符串常量等。1.1 整数常量const int numberOfStudents = 30;1.2 浮点数常量const double pi = 3.14;1.3 字符常量const char grade = 'A';1.4 字符串常量const char* greeting = "Hello, World!";2. 符号常量符号常量是使用 const 关键字声明的变量,其值在程序执行期间不能被修改。符号常量在程序中的任何地方都可以使用,而且可以提供更好的可读性和维护性。const int maxAttempts = 3;3. constexpr 关键字在 C++11 及之后的标准中,可以使用 constexpr 关键字定义常量表达式,这是在编译时计算的常量,可以用于一些需要在编译时确定的场景。constexpr int squ...
C++ 变量作用域
在 C++ 中,变量的作用域定义了变量在程序中可见和可访问的区域。C++ 中有以下几种主要的变量作用域:1. 局部作用域(Local Scope)局部作用域指的是变量在函数或语句块内声明的情况。这些变量只在声明它们的函数或语句块内可见,超出这个范围就无法访问。#include <iostream>void exampleFunction() { int localVar = 10; // 局部变量 std::cout << "Local Variable: " << localVar << std::endl;} // localVar 超出作用域int main() { exampleFunction(); // std::cout << localVar; // 这里 localVar 不可见 return 0;}2. 全局作用域(Global Scope)全局作用域指的是在函数外声明的变量。这些变量在整个程序中都是可见的,可以在程序的任何地方使用。#include <iostream&...
C++ 变量类型
在 C++ 中,变量是用于存储和表示数据的标识符。每个变量都有一个特定的类型,指定了它可以存储的数据的种类和范围。以下是一些常见的 C++ 变量类型:1. 基本变量类型1.1 整数类型 int:整数类型,通常占用 4 字节。 short:短整数类型,通常占用 2 字节。 long:长整数类型,占用字节取决于编译器。 long long:更长的整数类型,占用字节取决于编译器。int age = 25;1.2 浮点数类型 float:单精度浮点数。 double:双精度浮点数,通常精度比 float 更高。double pi = 3.14;1.3 字符类型 char:用于存储单个字符。char grade = 'A';1.4 布尔类型 bool:用于表示布尔值,只能取 true 或 false。bool isStudent = true;2. 派生变量类型2.1 数组用于存储相同类型的多个元素。int numbers[5] = {1, 2, 3, 4, 5};2.2 指针存储变量的地址。int x = 10;int *ptr = &x; // 指向 x 的指针2.3 引用提供变量的...
C++ 数据类型
C++ 提供了多种基本的数据类型,用于存储不同类型的数据。以下是一些常见的 C++ 数据类型:1. 基本数据类型1.1 整数类型 int:整数类型,通常占用 4 字节。 short:短整数类型,通常占用 2 字节。 long:长整数类型,占用字节取决于编译器。 long long:更长的整数类型,占用字节取决于编译器。int num = 42;1.2 浮点数类型 float:单精度浮点数。 double:双精度浮点数,通常精度比 float 更高。float pi = 3.14;1.3 字符类型 char:用于存储单个字符。char grade = 'A';1.4 布尔类型 bool:用于表示布尔值,只能取 true 或 false。bool isTrue = true;2. 派生数据类型2.1 数组用于存储相同类型的多个元素。int numbers[5] = {1, 2, 3, 4, 5};2.2 指针存储变量的地址。int x = 10;int *ptr = &x; // 指向 x 的指针2.3 引用提供变量的别名。int y = 20;int &ref = y; ...
C++ 注释
在 C++ 中,有两种主要的注释形式:单行注释和多行注释。1. 单行注释在 C++ 中,使用 // 符号来表示单行注释。单行注释从 // 开始一直到行尾结束,不会被编译器解释。// 这是单行注释int x = 5; // 这也是单行注释2. 多行注释C++ 也支持使用 /* */ 符号来表示多行注释。多行注释可以跨越多行,并在 /* 和 */ 之间的所有文本都会被注释掉。/* 这是 多行 注释*/int y = 10; /* 这也是多行注释 */多行注释通常用于注释一段较长的代码块或暂时禁用一段代码。注释对于代码的可读性和维护性非常重要,它可以帮助其他程序员或你自己理解代码的意图。
C++ 基本语法
C++ 是一种广泛用于系统/应用程序开发的编程语言。以下是一些 C++ 的基本语法要点:1. 注释// 单行注释/* 多行注释*/2. 数据类型int // 整数float // 单精度浮点数double // 双精度浮点数char // 字符bool // 布尔值// 示例int age = 25;float price = 10.99;char grade = 'A';bool isStudent = true;3. 变量int x; // 定义整数变量 xfloat y = 3.14; // 定义并初始化浮点数变量 y4. 运算符+, -, *, /, % // 加减乘除取余++, -- // 自增自减+=, -=, *=, /= // 缩写运算符==, !=, >, <, >=, <= // 比较运算符&&, ||, ! // 逻辑运算符5. 控制流程5.1 条件语句if (condition) { // 如果条件成立执行的代码} ...
C++ 环境设置
设置C++环境涉及到安装合适的编译器和配置开发环境。以下是在Windows系统上设置C++环境的基本步骤:1. 安装编译器: - 推荐使用MinGW(Minimalist GNU for Windows)或者Visual Studio作为C++编译器。你可以选择根据需要下载并安装。 - MinGW: https://mingw-w64.org/doku.php - Visual Studio: https://visualstudio.microsoft.com/visual-cpp-build-tools/2. 配置系统环境变量: - 将编译器的bin目录添加到系统的PATH环境变量中,以便在命令行中能够直接运行编译器。例如,如果你使用MinGW,将MinGW的bin目录添加到PATH。3. 选择集成开发环境(IDE): - 你可以选择使用轻量级的文本编辑器(如Visual Studio Code、Sublime Text)或者使用更全功能的IDE(如Code::Blocks、Dev-C++、Visual Studio等)进行编码。4. 创建一个简单的C+...
C++ 教程
1. 概述C++是一种通用编程语言,是C语言的扩展。它支持面向对象编程(OOP)和泛型编程。C++可以用于系统开发、游戏开发、嵌入式系统等多个领域。2. Hello World#include <iostream>int main() { std::cout << "Hello, World!" << std::endl; return 0;}3. 变量和数据类型#include <iostream>int main() { // 定义变量 int age = 25; double pi = 3.14159; char grade = 'A'; // 输出变量值 std::cout << "Age: " << age << std::endl; std::cout << "Pi: " << pi << std::endl; std::cout << "Grade: " << grade...
Windows安装MinGW和简单的使用教程
在 Windows 上安装 MinGW(Minimalist GNU for Windows)是为了在本地开发和编译 C/C++ 程序。以下是 MinGW 的安装和简单使用教程:安装 MinGW:1. 下载 MinGW 安装管理器: - 前往 MinGW 官方网站:[MinGW - Minimalist GNU for Windows](https://mingw-w64.org/doku.php) - 在页面中找到 "Downloads" 部分,点击 "Installer" 下载最新版本的安装管理器(MinGW-W64 Installer)。2. 运行安装器: - 执行下载的安装器(通常是一个 .exe 文件)。 - 在安装管理器中,选择 "Installation" 左侧的 "mingw-w64-install.exe"。 - 设置以下参数: - Architecture: 选择你的系统架构(32-bit 或 64-bit)。 - Threads: 选择线程模型(posix 或 win32)。 - Exception: 选择异常处理方式(...
C语言 标准库 – <time.h>
<time.h> 是 C 语言标准库中的头文件,提供了处理日期和时间的函数和类型。这些函数允许你获取当前时间、进行时间运算、格式化时间等操作。以下是 <time.h> 中一些常见的函数和类型:1. 时间类型: - time_t:是一个整数类型,通常用于表示从某个特定时间点开始的秒数。time_t 类型的变量通常用于存储时间戳。2. 获取当前时间: - time_t time(time_t *timer):获取当前的系统时间,返回一个 time_t 类型的值。如果 timer 不为 NULL,则也将当前时间存储在 timer 指向的变量中。3. 时间转换: - struct tm *localtime(const time_t *timer):将 time_t 类型的时间转换为本地时间(struct tm 结构)。 - struct tm *gmtime(const time_t *timer):将 time_t 类型的时间转换为协调世界时(UTC)时间(struct tm 结构)。 - time_t mktime(struct tm *tim...
C语言 标准库 – <string.h>
<string.h> 是 C 语言标准库中的头文件,提供了一系列用于字符串操作的函数和宏。这些函数包括字符串的复制、连接、比较、搜索等操作。以下是 <string.h> 中一些常见的函数和宏:1. 字符串复制和连接: - strcpy(char *dest, const char *src):将字符串 src 复制到字符串 dest。 - strncpy(char *dest, const char *src, size_t n):将字符串 src 的前 n 个字符复制到字符串 dest。 - strcat(char *dest, const char *src):将字符串 src 连接到字符串 dest 的末尾。 - strncat(char *dest, const char *src, size_t n):将字符串 src 的前 n 个字符连接到字符串 dest 的末尾。2. 字符串比较: - strcmp(const char *str1, const char *str2):比较字符串 str1 和 str2。 - strncm...
C语言 标准库 – <stdlib.h>
<stdlib.h> 是 C 语言标准库中的头文件,提供了一些常用的通用工具函数,包括内存分配、伪随机数生成、字符串转换等功能。以下是 <stdlib.h> 中一些常见的函数和宏:1. 内存分配和释放: - malloc(size_t size):分配指定大小的内存块。 - calloc(size_t num, size_t size):分配指定数量和大小的内存块,并初始化为零。 - realloc(void *ptr, size_t size):重新分配已分配的内存块的大小。 - free(void *ptr):释放动态分配的内存块。2. 伪随机数生成: - rand():生成一个伪随机整数。 - srand(unsigned int seed):设置随机数生成器的种子。3. 字符串转换: - atoi(const char *str):将字符串转换为整数。 - atol(const char *str):将字符串转换为长整数。 - atof(const char *str):将字符串转换为双精度浮点数。4. 伪随机数: ...
C语言 标准库 – <stdio.h>
<stdio.h> 是 C 语言标准库中的头文件,提供了输入和输出(I/O)操作的函数和宏。它包含了一系列用于文件操作、标准输入输出的函数,以及处理流(stream)的工具。以下是 <stdio.h> 中一些常见的函数和宏:1. 文件操作: - FILE:<stdio.h> 中定义了 FILE 类型,用于表示文件流。 - fopen(const char *filename, const char *mode):打开一个文件并返回一个指向 FILE 结构的指针。 - fclose(FILE *stream):关闭一个打开的文件。 - fprintf(FILE *stream, const char *format, ...):向文件流中写入格式化数据。 - fscanf(FILE *stream, const char *format, ...):从文件流中读取格式化数据。2. 标准输入输出: - printf(const char *format, ...):向标准输出流打印格式化数据。 - scanf(const ch...
C语言 标准库 – <stddef.h>
<stddef.h> 是 C 语言标准库中的头文件,提供了一些通用的定义和宏,其中最为重要的是 NULL 和 size_t。以下是 <stddef.h> 中的一些常用定义:1. NULL: - NULL 是一个空指针常量,通常用于表示指针不指向任何有效的对象或函数。2. size_t: - size_t 是一个无符号整数类型,用于表示对象的大小(字节数)。通常用于数组索引、内存分配函数等地方。3. ptrdiff_t: - ptrdiff_t 是一个有符号整数类型,用于表示两个指针之间的差值。4. offsetof(type, member): - offsetof 宏用于计算结构体中成员的偏移量。type 是结构体类型,member 是结构体中的成员名。以下是一个简单的例子,演示了 <stddef.h> 中的一些常用定义和宏的使用:#include <stdio.h>#include <stddef.h>struct ExampleStruct { int x; char y; double...
C语言 标准库 – <stdarg.h>
<stdarg.h> 是 C 语言标准库中的头文件,用于支持可变参数函数(variadic functions)。可变参数函数是那些能够接受可变数量参数的函数,例如,printf 和 scanf 就是典型的可变参数函数。以下是 <stdarg.h> 中的主要宏和函数:1. va_list 类型: - va_list 是一个用于保存可变参数信息的类型。2. va_start(va_list ap, last): - va_start 宏用于初始化 va_list 对象,使其指向参数列表中的第一个可变参数。last 是最后一个固定参数的名称。3. va_arg(va_list ap, type): - va_arg 宏用于获取参数列表中的下一个可变参数。type 是参数的类型。4. va_end(va_list ap): - va_end 宏用于清理 va_list 对象,确保资源得到正确释放。下面是一个简单的例子,演示了如何使用 <stdarg.h> 来实现一个简化版的可变参数函数:#include <stdio.h>#in...
C语言 标准库 – <signal.h>
<signal.h> 是 C 语言标准库中的头文件,提供了对信号处理的支持。信号是一种软件中断,通常用于通知程序发生了一些事件。<signal.h> 中包含了一组函数和宏,用于设置和处理信号。以下是 <signal.h> 中常见的函数和宏:1. void (*signal(int signum, void (*handler)(int)))(int);: - signal 函数用于设置对信号 signum 的处理方式。handler 是一个指向函数的指针,用于处理接收到的信号。返回值是之前设置的信号处理函数的指针。2. 信号常量: - SIGABRT:程序中止命令。 - SIGFPE:浮点异常。 - SIGILL:非法指令。 - SIGINT:终端中断符。 - SIGSEGV:段错误。 - SIGTERM:终止请求。3. SIG_DFL 和 SIG_IGN: - SIG_DFL:默认的信号处理方式。 - SIG_IGN:忽略信号。4. raise(int signum): - raise 函数用于向当前进程发送...
C语言 标准库 – <setjmp.h>
<setjmp.h> 是 C 语言标准库中的头文件,提供了一种非局部跳转(non-local jump)的机制,允许程序在一个函数中设置一个跳转点,然后在另一个函数中进行跳转,通常用于实现异常处理或非正常退出的情况。<setjmp.h> 中的两个主要函数是 setjmp 和 longjmp。1. int setjmp(jmp_buf env): - setjmp 函数用于设置跳转点,将当前程序的执行状态保存到 jmp_buf 类型的变量 env 中。如果 setjmp 直接被调用,它返回 0;如果通过 longjmp 调用返回,它返回一个非零值。2. void longjmp(jmp_buf env, int val): - longjmp 函数用于进行非局部跳转,将执行状态从跳转点 env 恢复,同时传递一个值 val 给 setjmp,使得 setjmp 返回这个值。以下是一个简单的例子,演示了如何使用 <setjmp.h> 实现简单的异常处理:#include <stdio.h>#include <setjmp.h&g...
C语言 标准库 – <math.h>
<math.h> 是 C 语言标准库中的头文件,提供了一系列数学函数,用于执行各种数学运算,如三角函数、指数函数、对数函数、幂运算等。以下是 <math.h> 中一些常见的数学函数:1. 三角函数: - sin(x):求正弦值。 - cos(x):求余弦值。 - tan(x):求正切值。 - asin(x):求反正弦值。 - acos(x):求反余弦值。 - atan(x):求反正切值。 - atan2(y, x):求给定两个坐标值的反正切值。2. 指数和对数函数: - exp(x):计算自然数 e 的 x 次方。 - log(x):计算 x 的自然对数。 - log10(x):计算 x 的以 10 为底的对数。3. 幂运算: - pow(x, y):计算 x 的 y 次方。4. 平方根和立方根: - sqrt(x):计算 x 的平方根。 - cbrt(x):计算 x 的立方根。5. 取整函数: - ceil(x):向上取整。 - floor(x):向下取整。 - round(x):四舍五入取整。6...