「C++」C++ Primer Plus 笔记:第二章 开始学习C++

2.1 进入C++

  • 注释以//打头
  • 想要执行程序后保持窗口打开(有的情况下执行完后窗口会自动关闭)可以在return前加上cin.get()

2.1.1 main()函数

  • 函数结构为:函数返回类型 函数名 (形参列表) 函数体
  • C++中main()函数是操作系统和程序之间的连接,即运行C++程序时,系统自动调用main()函数;如果没有main()函数,系统会指出未定义
  • 用作库函数的代码可以不需要main()函数,且库函数一般用于生成动态链接库(DLL),被其他C++代码调用

2.1.2 C++注释

// C++风格的注释,不可以跨行
/* C风格的注释,可以跨行 */

2.1.3 C++预处理器和iostream文件

  • 编译器对源代码中的#include <iostream>预处理后,源代码中的#include <iostream>被替换成了iostream中的代码,此时源代码变成了一个包含iostream内容的复合文件

2.1.4 头文件名

  • 头文件约定
    #include <iostream.h>    //C风格头文件
    #include <math.h>           //C++旧风格头文件
    #include <iostream>       //C++新风格头文件
    #include <cmath>            //C转C++后的头文件
    

2.1.5 名称空间

  • 通过名称空间来避免多个库中重名的定义,尤其是在使用不同产品的库函数时
  • std是C++标准库的命名空间
  • 如果命名空间放在全局,则在全局调用不需要加上名称空间前缀;如果在函数内申明命名空间,则可使用的范围也仅在函数内部
using std::cout;      // 或者在全局直接这样申明,使用cout时就不需要再加std::
using std::endl;
using std::cin;

2.1.6 使用cout进行C++输出

  • C++中双引号引起来的字符是字符串
  • \n在字符串中表示换行
  • \n 与 endl换行的区别是,endl确保程序继续运行,而有的系统中执行\n后需要输入信息才会出现

2.1.7 C++源代码的格式化

  • 有些语言是面向行的,这意味着每条语句占一行,比如python;但在C++中,分号才表示一条语句的结尾,这就意味着,using namespace std这一语句中的三个词即使使用回车写成三行,也是合法的代码。因此在C++中,只要能使用空格的地方都可以使用回车接着写,尽管在书写方面不易阅读,但它是合法的代码;但一句完整的字符串不能使用空格分割成两行
  • 一行代码中不可分割的元素叫做标记(token),空格、制表符、回车统称为空白(white space)

2.2 C++语句

2.2.1 声明语句和变量

  • C++在首次使用变量前申明即可

2.2.2 赋值语句

  • =被称为赋值运算符
  • C++(和C)可以连续使用赋值运算符,例如,下面的代码是合法的:
    int steinway;
    int baldwin;
    int yamaha;
    yamaha = baldwin = steinway = 88;     // 赋值顺序从右向左
    

2.2.3 cout的新花样

  • cout相比C中的printf函数,cout能自动区分需要输出的内容是int型的25还是string型的"25";而在printf中,需要用%s, %d来区分

2.3 其他C++语句

2.3.1 使用cin

  • iostream将cout和cin定义为流的对象,输入和输出变量时,变量是作为流进行输入输出

2.3.2 使用cout进行拼接

  • 不加endl即可;此外还可以使用连续的<<进行多行打字,例如:
cout << "Now you have 14";
cout << "carrots";
cout << endl;
// 等价于
cout << "Now you have 14"
          << "carrots"
          << endl;

2.3.3 类简介

  • C++的核心概念就是面向对象,类是实现面向对象的途径
  • 类是一种用户定义的数据类型,类定义描述的是表示了什么信息,可以对这些信息执行什么操作
  • 类实例(对象)是调用方法的实体

2.4 函数

2.4.1 使用有返回值的函数

  • 被调函数、调用函数的概念
  • 在使用函数之前,C++编译器需要明确参数类型和函数返回值类型
  • 提供参数类型和返回值类型等信息的方式是使用 函数原型语句,C++程序应当为程序中使用的每个函数提供原型,原型格式如下:
    double sqrt(double);    // function prototype
    
    原型结尾的分号表示该语句是一个函数原型,函数原型一般写在头文件中;如果去掉分号,那么该语句是一个函数头,而编译器会要求读取该函数头的函数头;函数头一般写在源文件中
  • 函数原型只描述函数接口;函数描述函数实现细节
  • 使用老式头文件引用xxx.h可以同时使用在C和C++中

2.4.2 函数变体

  • void使用
    int rand(void);                 // 函数不接收任何参数
    int rand();                          // 函数隐式地表明不接收任何参数
    void rand();                      // 函数不返回任何参数
    

2.4.3 用户定义的函数

  • C/C++不允许函数嵌套定义
  • main函数的返回值是返回到系统,且main返回0表示程序运行正常,1表示运行发生错误

2.4.4 用户定义的有返回值的函数

  • 函数特性包括:函数原型,函数头,函数体,接受参数,返回值

2.4.5 在多函数程序中使用using编译指令

  • using namespace std被放在文件开头处,表示该文件的所有函数都能使用名称空间std中的所有元素
  • using namespace std被放在函数内部,表示只能该函数能够使用名称空间std中的所有元素
    该声明作用范围只在该函数;即使该函数内调用了其他函数,而其他函数使用了名称空间中的元素而没有该声明,会报错
  • using namespace std被放在函数内部且放在特定函数前(例如 using std::cout),那么在该函数内部可以直接调用该特定函数而不加名称空间前缀
  • 完全不适用using编译指令,直接在调用名称空间函数前加上名称空间前缀
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值