C++最强の索引

做这个笔记的初心是为了在阅读C++面对繁多的知识的时候我还可以很好的去进行回顾

重点是我做完这个东西我还会看

一、

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

在这里插入图片描述

1.关于 return 返回值为 0 或者 1 的差别

  • 在C++中,main()函数作为整个程序的入口点,它有不同的返回值类型,它可以返回int类型或者是void类型(C++11标准之后)。当main()函数返回int类型时,返回值可以用来表示程序的执行结果或状态,常见的用法如下:

    其主要是通过返回值表示程序的结果和状态,当我们遇到报错可以从return的结果进行排查和优化

    1. 返回0表示程序正常结束;

      int main() {
          // do something
          return 0; // 程序执行完毕,返回0表示正常结束
      }
      
    2. 返回非0数值表示程序出现了错误或异常。

      int main() {
          int result = do_something();
          if (result == 0) {
              return 1; // 发生错误,返回非0值
          }
      
          // ...
      
          return 0; // 程序执行完毕,返回0表示正常结束
      }
      

    main()函数返回void类型时,程序通常只是执行一些单次任务,没有返回值,如下所示:

    void main() {
        // 打印一句话
        std::cout << "Hello World!" << std::endl;
    }
    

    需要注意的是,虽然在一些编译器中允许使用**void main()**来声明入口函数,但是按照C++标准,使用int main()是正确的方式。

    另外,返回值类型为voidmain()函数在C++11标准之前是不被允许的,如果代码需要在旧的编译器中编译,应当遵循旧有的C++标准。


2.iostream 库

  • iostream 库包含两个基础类型 istreamostream , 分别表示 输入流输出流

3.istream 库

  • cin -> 标准输入standard input),为istream类型的对象

4.ostream 库

  • cout -> 标准输入standard input),为istream类型的对象
// 	定义一个值
int n;
//	cin  输入一个东西(对象)
std::cin>>n;
// 	cout 输出一个东西(对象)
std::cout<<n;
  • cerr -> 标准错误standard error),输出警告和错误信息

  • clog -> 用于输出程序运行时的一般性信息

6.<< 和 >>

  • <<运算符接受两个运算对象:左侧的运算对象必须是一个ostream 对象,右边的运算对象是要打印的值
  • >>运算符接受两个运算对象:左侧的运算对象必须是一个istream 对象,右边的运算对象是要输入的值

7.字符串字面值常量

用一对双引号包括的字符序列。在双引号之间的文本被打印到标准输出

  • 例如:

    std::cout<<"HELLOWORLD";
    //"HELLOWORLD"就是个字符串字面值常量
    

7.endl

  • 被称为操作符的特殊值

  • 写入endl的效果是结束当前行,并将于设备关联的缓冲区(buffer)中的内容刷到设备中

endl是一个用于输出流的操作符,它用于输出一个换行符并刷新输出流的缓冲区。与使用 ‘\n’ 不同的是,endl还会清空缓冲区,确保所有数据都已经被输出到目的地。

8.缓冲区

  • 缓冲区是一个用于保存输出数据的缓存区域,它可以提高输出效率,因为将大量的数据一次性写入到输出流(例如屏幕或文件)比多次写入单独的字符要快得多。当缓冲区被填满或者显式地被刷新时,缓冲区的内容将被写入到输出流中。

  • 当程序运行时,可以在输出流中使用多个 endl 操作符,这样缓冲区中所有的内容都会被刷新到输出流中。实际上,缓冲区的大小是由操作系统和输出流决定的,通常情况下,缓冲区大小在几千个字节到几十个字节之间。

endl操作符的作用是在输出流中输出一个换行符并刷新缓冲区,因此使用endl可以确保所有的输出数据都被正确地输出。缓冲区的作用是提高输出效率,因为将大量的数据一次性写入到输出流比多次写入单独的字符要快得多。


9.命名空间

命名空间是C++中的一种机制,可以将全局作用域划分为不同的区域,以避免名称冲突。命名空间提供了一种在大型程序中组织代码的方式,可以使程序更加易于维护和扩展。

具体来说,**命名空间提供了一个封装声明和定义的机制,使得相同名称的实体可以分别存在于不同的命名空间中而不会发生名字冲突。**命名空间可以包含变量、函数、类、结构体、枚举类型等各种程序实体,这些实体都可以通过访问命名空间中的符号来进行访问。

命名空间的用途包括:

  • 防止名称冲突:如果两个不同的函数名或变量名在同一作用域中被定义,就会产生冲突,使用命名空间可以避免这种情况。

  • 模块化程序设计:将代码模块化,可以更好地组织程序代码,使得程序更加清晰易懂,也方便代码的维护和修改。

  • 避免依赖关系:使用命名空间可以明确指定代码实体所属的作用域,这样在不同的对象之间就不存在不必要的依赖关系。

  • 与其他库进行交互:如果要使用不同的库,在库之间可能存在命名冲突,通过启用命名空间,可以在同一个程序中使用多个库而不会出现名称冲突的情况。

命名空间是一种非常有用的C++机制,它提供了一种有效的方式来管理和组织程序中的实体,同时也有助于避免名称冲突问题,提高程序代码的灵活性和可维护性。

  • 前缀的 std:: 指出名字 coutendl 是定义在名为 std 的命名空间 (namespace),所以在使用cin、cout、endl需要加上前缀


10.关于 循环 的一些疑问及思考

为什么 for循环体 初始化的变量只能在循环体内使用?

for循环体中定义的变量只在循环体中有效,超出循环范围就会失效,也就是超出了它的作用域。这是因为循环体中定义的变量位于块作用域内,只有在该块内有效。当循环体结束时,这些变量就会被销毁,无法在循环体外再次使用。如果需要在循环体外使用循环变量,可以在循环之前定义并初始化该变量再进行循环操作。

如果循环变量是复杂的对象,建议在循环外定义好,在for循环的赋值语句、判断语句、都要避免重复创建变量

读入数量不定的输入数据

#include <iostream>
int main(){
	int sum=0,value=0;
    //读取数据直到遇到文件尾
    while(std::cin >> value){
		sum += value;
    }
    std::cout << "SUM = " << sum << std::endl;
    return 0;
}

当我们使用一个给istream对象作为条件时,其效果是检测流的状态。如果流是有效的,即流未遇到问题,那么检测成功,当遇到文件结尾符(end-of-file),或遇到一个无效输入时(读入的值不是一个整数),istream对象的状态会变得无效。处于无效状态的istream对象会使条件变为 假


11.类

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值