C++详解之基本结构

时间:2024-11-18 14:59:23

对于C++,你了解多少呢?在学习C++的漫漫长路上,基本结构可是必须掌握的东西。这一章,我就带大家聊聊“基本结构”。

目录

1、头文件

2、命名空间

3、主函数

 4、语法

Q1:C++为什么每个句子后面都要加分号

5、return 0;语句

异常的返回值:

Ⅰ、process exited with return value 3221225477

Ⅱ、process exited with return value 3221225725

Ⅲ、process exited with return value 3221225620


1、头文件

C++常用的头文件包括:

  1. iostream:用于输入输出操作的头文件,包括cincoutendl等。

  2. iomanip:用于格式化输出操作的头文件,包括setwsetprecision等。

  3. cmath:用于数学运算操作的头文件,包括数学函数如sqrtsincos等。

  4. cstdlib:用于系统调用、随机数生成等操作的头文件,包括randatoiexit等。

  5. cstring:用于字符串操作的头文件,包括strlenstrcpystrcat等。

  6. vector:用于向量操作的头文件,包括vectorpush_backpop_back等。

  7. algorithm:用于算法操作的头文件,包括sortreversefind等。

  8. string:用于字符串处理的头文件,包括stringsubstrfind等。

  9. fstream:用于文件输入输出操作的头文件,包括fstreamifstreamofstream等。

  10. ctime:用于时间处理的头文件,包括timeclock等。

这些头文件,只是C++头文件的一小部分。更多的头文件,会在今后的学习中学到。

那有的同学就问了,那么多头文件,该怎么记忆呢?

其实没有关系,c++头文件中还有一个大BOSS:

#include<bits/stdc++.h>

这个头文件可厉害了,他有着几乎所有C++的头文件:

Tips:以下为stdc++.h的内容,可跳过

  1. // C
  2. #ifndef _GLIBCXX_NO_ASSERT
  3. #include <cassert>
  4. #endif
  5. #include <cctype>
  6. #include <cerrno>
  7. #include <cfloat>
  8. #include <ciso646>
  9. #include <climits>
  10. #include <clocale>
  11. #include <cmath>
  12. #include <csetjmp>
  13. #include <csignal>
  14. #include <cstdarg>
  15. #include <cstddef>
  16. #include <cstdio>
  17. #include <cstdlib>
  18. #include <cstring>
  19. #include <ctime>
  20. #include <cwchar>
  21. #include <cwctype>
  22. #if __cplusplus >= 201103L
  23. #include <ccomplex>
  24. #include <cfenv>
  25. #include <cinttypes>
  26. #include <cstdalign>
  27. #include <cstdbool>
  28. #include <cstdint>
  29. #include <ctgmath>
  30. #include <cuchar>
  31. #endif
  32. // C++
  33. #include <algorithm>
  34. #include <bitset>
  35. #include <complex>
  36. #include <deque>
  37. #include <exception>
  38. #include <fstream>
  39. #include <functional>
  40. #include <iomanip>
  41. #include <ios>
  42. #include <iosfwd>
  43. #include <iostream>
  44. #include <istream>
  45. #include <iterator>
  46. #include <limits>
  47. #include <list>
  48. #include <locale>
  49. #include <map>
  50. #include <memory>
  51. #include <new>
  52. #include <numeric>
  53. #include <ostream>
  54. #include <queue>
  55. #include <set>
  56. #include <sstream>
  57. #include <stack>
  58. #include <stdexcept>
  59. #include <streambuf>
  60. #include <string>
  61. #include <typeinfo>
  62. #include <utility>
  63. #include <valarray>
  64. #include <vector>
  65. #if __cplusplus >= 201103L
  66. #include <array>
  67. #include <atomic>
  68. #include <chrono>
  69. #include <codecvt>
  70. #include <condition_variable>
  71. #include <forward_list>
  72. #include <future>
  73. #include <initializer_list>
  74. #include <mutex>
  75. #include <random>
  76. #include <ratio>
  77. #include <regex>
  78. #include <scoped_allocator>
  79. #include <system_error>
  80. #include <thread>
  81. #include <tuple>
  82. #include <typeindex>
  83. #include <type_traits>
  84. #include <unordered_map>
  85. #include <unordered_set>
  86. #endif
  87. #if __cplusplus >= 201402L
  88. #include <shared_mutex>
  89. #endif
  90. #if __cplusplus >= 201703L
  91. #include <any>
  92. #include <charconv>
  93. // #include <execution>
  94. #include <filesystem>
  95. #include <optional>
  96. #include <memory_resource>
  97. #include <string_view>
  98. #include <variant>
  99. #endif
  100. #if __cplusplus > 201703L
  101. #include <bit>
  102. #include <compare>
  103. #include <concepts>
  104. #include <numbers>
  105. #include <ranges>
  106. #include <span>
  107. #include <stop_token>
  108. // #include <syncstream>
  109. #include <version>
  110. #endif

这个头文件虽然比较厉害,但是比赛的时候可能不允许用这个头文件。具体为什么呢?咱也不知道,咱也不敢问,就这样吧。

2、命名空间

C++最常用的命名空间是:

using namespace std;

std是一个命名空间,它可以调用输入、输出模块。

using namespace std; 语句用于指定当前代码中使用的命名空间。在C++中,命名空间是用来组织和管理代码中的标识符(如变量、函数、类等)的。标准库中的大部分功能都位于 std 命名空间中。

使用 using namespace std; 可以省略在代码中写出 std:: 前缀,直接使用标准库中的标识符。例如,可以直接使用 coutcin 来进行输入和输出,而不需要写作 std::coutstd::cin

  1. #include <iostream>
  2. int main() {
  3. using namespace std;
  4. int num;
  5. cout << "Enter a number: ";
  6. cin >> num;
  7. cout << "The number you entered is: " << num << endl;
  8. return 0;
  9. }

当然,我们可以手动定义命名空间,比如:

  1. #include <iostream>
  2. // 定义命名空间
  3. namespace MyNamespace {
  4. int myFunction() {
  5. return 42;
  6. }
  7. }
  8. int main() {
  9. // 调用命名空间中的函数
  10. std::cout << MyNamespace::myFunction() << std::endl;
  11. return 0;
  12. }

3、主函数

C++中的主函数通常被命名为main()函数。它是C++程序的入口点,程序从这里开始执行。主函数定义了程序的结构和逻辑。以下是一个简单的C++主函数示例:

  1. #include <iostream>
  2. int main() {
  3. std::cout << "Hello, World!" << std::endl;
  4. return 0;
  5. }

在这个例子中,主函数使用了iostream头文件,并使用std命名空间。它使用std::cout打印出一条"Hello, World!"的消息,然后使用std::endl结束这行输出。最后,通过return语句返回0来表示程序成功结束。

关于C++主函数,以下是一些常见的内容:

  1. 主函数的定义:主函数是C++程序的入口点,它是程序开始执行的地方。

  2. 主函数的声明:主函数的声明有两种形式:

    • int main()
    • int main(int argc, char* argv[])
  3. 主函数的返回值:主函数的返回值类型通常是整数类型 int,表示程序的退出状态码。返回 0 表示程序正常执行结束,其他非零值表示程序发生了错误或异常。

  4. 命令行参数:主函数可以接受命令行参数,参数的数量和内容通过 int argcchar* argv[] 参数传递给主函数。argc 表示命令行参数的数量,argv[] 是一个字符串数组,每个字符串表示一个命令行参数。

  5. 函数体:主函数的函数体是用花括号 {} 包围起来的代码块,用于实现程序的主要逻辑。

  6. 函数参数:主函数没有任何形式参数,但可以使用命令行参数来获取外部传入的数据。

  7. 调用其他函数:主函数可以调用其他函数来实现更复杂的功能,可以是标准库函数或用户自定义函数。

  8. 输出结果:主函数通常使用标准输出流 cout 来输出结果到控制台,可以使用流插入运算符 &lt;&lt; 来输出各种类型的数据。

  9. 接受输入:主函数可以使用标准输入流 cin 来接受用户的输入,可以使用流提取运算符 >> 来读取各种类型的数据。

  10. 异常处理:主函数可以使用异常处理机制来捕获和处理程序中可能发生的异常,以保证程序的稳定性和健壮性。

 4、语法

C++是一种面向对象的编程语言,它扩展了C语言的功能并引入了许多新的特性。以下是C++的一些基本语法:

  1. 注释:可以使用双斜杠(//)进行单行注释,或者使用斜杠星号(/* ... */)进行多行注释。

  2. 标识符:标识符是用来命名变量、函数、类等的名称。它必须以字母或下划线开头,后面可以是字母、数字或下划线。

  3. 关键字:C++有许多关键字,这些关键字用于表示语言的各种功能或特性。例如:int、float、if、for等。

  4. 数据类型:C++支持各种数据类型,包括整数类型(如int、short、long)、浮点类型(如float、double)、字符类型(如char)、布尔类型(如bool)等。

  5. 变量声明:在使用变量之前,需要先声明它们。变量声明指定了变量的名称和类型。

  6. 变量赋值:可以使用赋值运算符(=)将一个值赋给变量。

  7. 运算符:C++支持各种运算符,包括算术运算符(如+、-、*、/)、关系运算符(如==、!=、<、>)、逻辑运算符(如&&、||、!)等。

  8. 控制流语句:C++提供了各种控制流语句,如条件语句(if...else)、循环语句(for、while、do...while)等,用于控制程序的执行流程。

  9. 函数:函数是一段可重用的代码块,可以接受输入参数并返回一个值。函数由函数名、参数列表和函数体组成。

  10. 类与对象:C++是一种面向对象的语言,它支持类和对象的概念。类是一种用户自定义的数据类型,包含数据成员和成员函数。对象是类的一个实例。

以上是C++的一些基本语法,它们构成了C++程序的基础结构。不过C++还有许多其他的语法和特性,如数组、指针、引用、模板等,这些可以进一步扩展和深入学习。

Q1:C++为什么每个句子后面都要加分号

在C++中,每个句子后面都需要加分号是因为分号是语句的结束符号。C++是一种基于指令的编程语言,语句是用来执行特定操作的指令。每个语句都必须以分号结尾,以告诉编译器当前语句的结束位置。

通过在每个句子结束时添加分号,编译器可以很容易地识别每个语句的边界。这样可以避免歧义和解析错误。

需要注意的是,C++中有一些特殊的语句(如if语句、for循环语句等)可能需要在语句块的末尾而不是单独的语句中添加分号。这是因为这些语句是由多个子语句组成的,它们使用花括号{}来表示语句块的开始和结束。

5、return 0;语句

在C++中,return 0语句用于表示程序的正常退出。它通常出现在main函数的最后一行。0表示程序成功执行并正常退出,可以将其视为程序返回给操作系统的退出码。在大多数操作系统中,返回给操作系统的退出码为0表示程序成功执行,非0值表示程序执行错误或异常终止。

异常的返回值:

Ⅰ、process exited with return value 3221225477

这个错误通常表示在运行C++程序时遇到了一个致命错误。具体错误的原因有很多可能性,包括:

  1. 未定义的行为:程序可能访问了未初始化的变量,或者使用了无效的指针。

  2. 内存溢出:程序可能尝试分配超过可用内存的内存块。

  3. 栈溢出:程序的递归调用可能导致栈溢出。

  4. 异常处理问题:程序中可能存在不正确的异常处理,导致程序终止。

  5. 动态链接错误:程序可能无法正确加载和链接所需的库。

要解决这个问题,可以尝试以下几种方法:

  1. 检查未定义的行为:查看程序中是否有未初始化的变量或无效的指针,并进行必要的修复。

  2. 检查内存使用:确保程序在使用内存时没有出现溢出的情况,可以使用工具检测内存泄漏或使用过多的内存。

  3. 检查递归调用:如果程序使用了递归调用,确保递归调用没有导致栈溢出。

  4. 检查异常处理:确保程序中的异常处理机制正确,并处理所有可能的异常情况。

  5. 检查动态链接:确保程序可以正确加载和链接所需的库。

如果以上方法都没有解决问题,可以尝试使用调试器来检查程序的执行过程,以找出具体的错误原因。

Ⅱ、process exited with return value 3221225725

出现"process exited with return value 3221225725"通常是由于程序运行时发生了异常或错误引起的。具体原因可能有很多,包括但不限于以下几点:

  1. 栈溢出:当程序使用了过多的栈空间时,可能会导致栈溢出,并导致程序异常退出。
  2. 无效的指针引用:程序使用了一个无效的指针,导致运行时错误。
  3. 数组越界:程序试图访问数组超出其边界的元素,导致运行时错误。
  4. 未初始化的变量:程序使用了未初始化的变量,导致运行时错误。

要解决这个问题,可以尝试进行以下几步:

  1. 检查代码的逻辑错误,特别是与内存操作相关的部分,确保没有访问无效内存地址、越界访问数组等问题。
  2. 使用调试工具,如GDB或Visual Studio的调试器,逐步跟踪程序运行过程,找出导致异常的具体操作或变量。
  3. 检查是否有未初始化的变量,确保所有变量在使用之前都被正确初始化。
  4. 确保程序在使用指针时,指针的有效性得到正确检查和保证。
  5. 增加适当的错误处理机制,如异常处理,确保程序在异常情况下能够优雅地退出而不是崩溃。

如果仍然无法解决问题,建议查看程序的错误日志或调试输出,以获取更多的上下文信息,帮助定位和解决问题。

Ⅲ、process exited with return value 3221225620

这可是最无语的一个了,小学生都知道,除数不能为0……

SO:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main(){
  4. cout<<3/0;
  5. return 0;
  6. }

emmm……

好了,这篇文章就到这里了,以后会持续跟新,我们下篇文章再见ヾ( ̄▽ ̄)Bye~Bye~