《C++Primer》读书笔记——第2章 变量和基本类型

  1. (P32)double和float的选择:执行浮点数运算选用double。这是因为float通常精度不够而且双精度浮点数和单精度浮点数的计算代价相差无几。
  2. (P33)类型转换,非bool型赋值给bool型:初始值为0 的结果为false,否则结果为true。非0即1
  3. (P35)字面值常量
  4. (P39)初始化:创建变量时赋予其一个初始值。赋值:把对象当前值擦除,而以一个新值替代
  5. (P40)如果定义变量时没有指定初值,则变量被默认初始化。定义于任何函数之外的变量将被初始化为0。定义在函数体内部的内置变量将不被初始化。一个未被初始化的内置类型变量的值是未定义的,如果试图拷贝或以其他形式访问此类值将发生错误。建议初始化每一个内置类型的变量,简单可靠。
  6. (P41)声明(declaration)使得名字为程序所知。定义(definition)负责创建于名字相关的实体。
    extern int i;//声明i而未定义i
    int j;//声明并定义j
    extern double pi = 3.1416;//声明并定义pi。任何包含显示初始化的声明即成为定义
    变量能且只能被定义一次,但是可以被多次声明。
    如果要在多个文件中使用同一个变量,就必须将声明与定义分离,即:定义只出现在一个文件中,其他用到该变量的文件必须对其声明,却决不能重复定义。一个int i, 其他都是extern int i
  7. (P42)C++标识符(identifier)由字母数字下划线组成,不以数字开头,长度没有限制,但是对大小字母写敏感。(如:int Int =0; int _ = 0; 都是正确的)
  8. (P)全局作用域,块作用域。建议:当你第一次使用变量时再定义它。第一,很容易找到变量的定义;第二,会赋予比较合理的初始值。
  9. (P)复合类型:基于其他类型定义的类型,如引用和指针。
  10. (P)引用reference(左值引用lvalue reference)
    1. 引用的定义,引用必须初始化,引用的初始值必须是一个对象
      int ival = 1024;
      int &refVal = ival;
      int &refVal2;//报错:引用必须初始化
      int &refVal2 = 10;//报错:引用的初始值必须是一个对象
    2. 引用并非对象,它只是一个已存在对象的别名,是将引用和源对象帮到在一起。
      refval = 2;//执行完此句后,ival=2
    3. 以引用作为初始值
      int &refVal3 = refVal;//等价于int &refVal3 = ival;
    4. 因为引用本身不是一个对象,所以不能定义引用的引用
      int &&refVal4 = ival;//报错:不能定义引用的引用
    5. 允许在一条语句中定义多个引用,其中每个引用都必须以符号&开头
      int &refVal5 = ival, &refVal6 = ival;//定义了两个引用
      int &refVal5 = ival, refVal6 = ival;//定义了1个引用1个int型对象
  11. (P)指针(pointer)
    1. 指针存放某个对象的地址,需要用取地址符(操作符&)获取该地址
      int ival = 42;
      int *p = &ival;//p存放ival的地址,p是指向ival的指针
      int *p2;//正确!在定义时无需赋初值。但建议初始化所以指针,若不知道指向何处,初始化为0
    2. 指针本身就是一个对象,允许对指针的赋值和拷贝
      int *p3 = p;//正确!
    3. 指针指向了一个对象,使用解引用符(操作符*)来访问该对象
      int ival = 42;
      int *p = &ival;
      cout << *p;//用操作符得到指针p所指的对象
      *p=0;//操作结果:ival=0。对解引用的结果赋值,实际上就是对指针所指的对象赋值
    4. 空指针(null pointer)不指向任何对象。生成空指针的方法:
      int *p3 = 0;
      int *p3 = NULL;//需#include< cstdlib>,和上一句等价。Tips: NULL为预处理变量,它在头文件cstdlib中定义,她的值就是0
  12. (P)指针引用高级
    1. 指向指针的指针
      int ival = 1024;
      int *pi = &ival;
      int **ppi = & pi;//指向指针的指针,ppi指向对象pi,即存pi的地址
      cout << *ppi << **ppi;//一次解引用为pi的值(ival的地址),两次解引用为ival的值
    2. 指向指针的引用
      int i = 42;
      int *p;
      int *&r = p;//r是一个对指针p的引用,r是p的同名变量
      r = &i;//r指向i,即p指向i
      *r = 0;//解引用r得到i,即i的值变为0
  13. (P)const限定符
    const int bufSize = 512;
    bunfSize = 512;//错误!bufSize为常量,任何试图为bufSize赋值的行为都将引发错误。
    const int k;//错误!因为const对象一旦创建就不能改变,所以必须初始化
    const对象被设置为仅在文件内有效。当多个文件同时用同一const变量时,有两种策略:
    1. 每个文件都用const int bufSize = 0; 等同于在多个不同文件中定义多个独立的变量
    2. 第一个文件用extern const int bufSize = 0; 其他文件用extern const int bufSize; 所有文件共享同一变量
  14. (P)类型别名
    typedef double wages;//wage 是double的同义词
    typedef wages base, * p;//base是double的同义词, p是double*的同义词
  15. (P)自定义数据结构
    C++11新标准可以为数据成员定义类内初始值。之前的不可以,数据成员只能默认初始化
  16. (P)预处理#include<*.h>代替头文件内容
    头文件保护符(可确保头文件多次包含仍能安全工作)#define指令把一个名字设置为预处理变量,#ifdef指令当且仅当定义时为真,#ifndef指令当且仅当未定义时为真,一旦结果为真,则执行后续代码直至遇到#endif指令为止
    #ifndef SALES_DATA_H//SALES_DATA_H为预处理变量,一般全部大写
    #define SALES_DATA_H
    #include< string>
    struct Sales_data {
    std::string bookNo;
    unsigned units_sold = 0;
    double revenue = 0.0;
    }
    #endif
Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值