来源:http://blog.csdn.net/wangqiulin123456/article/details/8483853

1、变量初始化:

     定义变量时,应该给变量赋初始值,除非确定将变量用于其他意图之前会覆盖这个初值。如果不能保证读取变量之前重置变量,就应该初始化变量。变量的初始化如下:
  1. int val1 = 0; //初始化
  2. int val2;       //未初始化

2、编译器的部分功能: 查错

  • 语法错误
  • 类型错误
  • 声明错误

3、从键盘输入文件结束符

     OS使用不同的值作为文件结束符。Windows系统下通过输入Ctl+z来输入文件结束符,Unix中通常是Ctl+d。

4、整型(integral type):表示整数、字符和布尔值的算术类型。

5、C++中,把负值赋给unsigned对象是合法的,其结果是该负数对该类型的取值个数求模后的值,如果把-1赋给8位的unsigned char 那么结果就是255。

6、字面值常量(literal cinstant)

  1. 整形字面值:可以用3钟进
    制来表示,十进制(decimal)、八进制(octal)、十六进制(hexadecimal)。以0开头的是八进制,以0x或0X开头的是十六进制。
    还可以在其后加后缀,能强制将字面值常量转化如:L或者l代表常量long,U或者u代表unsigned类型。如:128u /*unsigned*/
       8lu/*unsigned long*/
  2. 浮点字面值:通常用十进制或者科学计数法表示,科学技术用E或者e表示。其后加F或者f表示单精度,L或者l表示扩展精度。  如:3.1232F  3.232323E0f
  3. 布尔值和字符字面值:
  4. 非打印字符转移序列

7、变量

    1.什么是变量:变量提供了程序可以操作的有名字的存储区。C++中的每一个变量都有特定的类型,该类型决定了变量的内存大小和布局、能够存储与该内存中的值的取值范围以及可运用在该变量上的操作集。
    2.C++关键字
     

8、变量命名习惯

  • 变量名一般用小写字母。例如通常写成index而不是Index或者INDEX
  • 标识符应使用能帮组记忆的名字
  • 包含多个词的标识符书写为在每个词之间添加一个下划线,或者每个内嵌的词的第一个字母都大写

9、变量的初始化

     有两种初始化方式:复制初始化(copy-initialization)和直接初始化(direct-initialization)。
      int ival(1024); //direct-initialization
      int ival = 1024; //copy-initialization
      初始化不是赋值,初始化指创建变量并给它赋初始值,而赋值是檫除对象的当前值并用新值代替。

10、变量初始化规则

 
      1.内置类型变量的初始化
       
内置类型变量是否自动初始化取决于变量定义的位置。在函数体外定义的变量都初始化成0,在函数体内定义的内置类型变量不进行自动初始化。除了用作赋值操作
符的做操作数,未初始化变量会引起错误难以发现。所以建议每个内置类型的对象都要初始化,虽不是必须但会更加容易和安全。
      2.声明与定义
          变量的定义:用于为变量分配存储空间,还可以为变量指定初始值。在一个程序中,变量有且仅有一个定义、。
          声明:用于向程序表面变量的类型和名字。定义也是声明,当定义变量时我们声明了他的类型和名字。可以通过使用extern关键字声明变量名而不定义他。不定义的声明包括对象名、对象类型和对象类型前的关键字extern“
          extern int i;  //declares but does not define i;
          int i;            //declares and define i
          程序中声明可以多次,但是定义只有一次。只有当声明也是定义时,声明才可以初始化,因为只有定义才分配存储空间。初始化式必须有存储空间来初始化。

11、const限定符

 
       1.魔数:其意义在上下文没有体现出来。
       2.const限定符将一个对象转换成一个常量 const int bufSize = 512;   //bufSize是不可以修改的
          因为常量在定义后就不能被修改,所以定义时必须初始化。
       3.const对象默认为文件的局部变量:在全局作用域定义非const变量时,可以在整个程序中都可以访问。把一个非const变量定义在一个文件中,在另一个文件中使用这个变量。

  1. //file_1.cpp
  2. int counter; //definition
  3. //file_2.cpp
  4. extern int counter;   //uses counter from file_1
  5. ++counter;            //add counter defined in file_1
        在全局作用域声明的const变量是定义在该对象的文件中的局部变量,此变量只存在那个文件中,其他文件不能访问。通过指定const变量为extern,就可以在整个程序中访问const对象:

  1. //defines and initializes a const that is accessible to other files
  2. extern const int counter = 12; //definition
  3. //file_2.cpp
  4. extern const int counter;   //uses counter from file_1
  5. //uses counter defined file_1
  6. for(int index=0; index != counter; ++index)
  7. {
  8. ////
  9. }
      非const变量默认认为extern。要使const变量能够在其他的文件中访问,必须显示的指定为extern。

12、引用

 
    引用(reference)就是对象的另一个名字。在实际程序中,引用主要用作函数的形式参数。引用是一种复合类型,在变量名前添加"&"符号来定义。复合类型指其他类型定义的类型。

  1. int ival = 1024;
  2. int &refVal = ival; //ok
  3. int &refVal2; //error: a refernce must be initialized
  4. int &refVal3 = 10; // error:initializer must be an object
  • 引用是别名:当引用初始化后,只要该引用存在,他就保持绑定到初始化时指定的对象。不可能将引用绑定到另一个对象。
  • 定义多个引用:可以在一个类型定义行中定义多个引用。必须在每个引用标识符前添加"&"符号。
  • const引用:指向const对象的引用。可以读取但不能修改。非const引用只能绑定到与该引用同类型的对象,const引用可以绑定到不同但相关的类型的对象或者绑定右值。

13、typedef名字:用来定义类型的同义词。有一下三个目的:

  • 为了隐藏特定类型的实现,强调使用类型的目的
  • 简化复杂的类型定义,使其更易理解
  • 允许一种类型用于多种目的,同时使得每次使用该类型的目的明确

14、枚举(enumeration):定义整数常量集,并将他们聚集成组。

   1.定义和初始化:枚举的定义包括关键字enum,其后是一个枚举类型名。默认第一个枚举成员赋值为0,后面的每个比前一个大1.

  1. //input is 0, output is 1, and append is 2
  2. enum open_modes {input,output,append};
   2.枚举成员是常量:用来初始化枚举成员的值必须是一个常量表达式,

  1. //shape is 1, sphere is 2, cylinder is 3, polygon is 4
  2. enum Forms {shape = 1, sphere, cylinder, polygon};
   Forms中shape赋值为1,其他的是隐式初始化依次为2,3,4
   3.每个enum都定义一种唯一类型

15、头文件:

  • 头文件用于声明而不是用于定义(头文件包含在多个源文件中,所以不应该含有变量或者函数的定义,有三个例外:头文件可以定义类、值在编译时就已知的const对象和inline函数)
  • 一些const对象定义在头文件中

16、预处理器的简单介绍

   1.头文件经常需要其他头文件
   2.避免多重包含:预处理器变量的名字在程序中必须是唯一的。任何与预处理器变量相匹配的名字使用都关联到该预处理器变量。
   预处理器变量有两种状态:已定义和未定义。可以使用下面这段代码来预防多次包含:
  1. #ifndef __CPLUSPLUSPRIMER_H__
  2. #define __CPLUSPLUSPRIMER_H__
  3. //....
  4. #endif  //__CPLUSPLUSPRIMER_H__

《C++ primer》--第1,2章小结的更多相关文章

  1. C Primer Plus_第6章_循环_编程练习

    1.题略 #include int main(void) { int i; char ch[26]; for (i = 97; i <= (97+25); i++) { ch[i-97] = i ...

  2. C Primer Plus_第5章_运算符、表达式和语句_编程练习

    Practice 1. 输入分钟输出对应的小时和分钟. #include #define MIN_PER_H 60 int main(void) { int mins, hours, minutes; ...

  3. C Primer Plus_第四章_字符串和格式化输入输出_编程练习

    Practice 1.输入名字和姓氏,以"名字,姓氏"的格式输出打印. #include int main(void) { char name[20]; char family[2 ...

  4. Vimtutor(中文版)学习笔记各章小结

    在Bash中直接输入 vimtutor 打开新世界!通常阅读完需要25-30分钟不等,像玩游戏一样学会vim,然后爱不释手 里面设置了很多例子通过实践操作来学,这里仅把vimtutor上的每一章小结记 ...

  5. Python基础 第四章 字典(2)字典方法&章小结

    1. clear 方法clear删除所有的字典项,就地执行,什么都不返回(或者说返回None) d = {} d['name'] = 'Gumby' d['age'] = 42 print(d) re ...

  6. Python基础 第三章 使用字符串(3)字符串方法&本章小结

    字符串的方法非常之多,重点学习一些最有用的,完整的字符串方法参见<Python基础教程(第三版)>附录B. 模块string,虽然风头已小,但其包含了一些字符串方法中没有的常量和函数,故将 ...

  7. 20190806-Python基础 第二章 列表和元组(3)元组&章小结

    元组,不可修改的序列(与列表的唯一差别) 1. 元组用圆括号括起,用逗号分隔 2. 如果只有一个值,也必须在后面加上逗号 print((42)) print((42,)) 结果: 42 (42,) p ...

  8. Unity 游戏框架搭建 2019 (九~十二) 第一章小结&第二章简介&第八个示例

    第一章小结 为了强化教程的重点,会在合适的时候进行总结与快速复习. 第二章 简介 在第一章我们做了知识库的准备,从而让我们更高效地收集示例. 在第二章,我们就用准备好的导出工具试着收集几个示例,这些示 ...

  9. Unity 游戏框架搭建 2019 (十八~二十) 概率函数 & GameObject 显示、隐藏简化 & 第二章 小结与快速复习

    在笔者刚做项目的时候,遇到了一个需求.第一个项目是一个跑酷游戏,而跑酷游戏是需要一条一条跑道拼接成的.每个跑道的长度是固定的,而怪物的出现位置也是在跑道上固定好的.那么怪物出现的概率决定一部分关卡的难 ...

  10. 《树莓派学习指南(基于Linux)》——本章小结

    本节书摘来自异步社区<树莓派学习指南(基于Linux)>一书中的第二章的本章小结,作者[英]Peter Membrey ,[澳]David Hows ,译者 张志博,孙峻文,更多章节内容可 ...

随机推荐

  1. Mysql笔记——DML

    数据操纵语言DML(Data Manipulation Language),用户通过它可以实现对数据库的基本操作. ========================== 1 插入数据 语法:INSER ...

  2. POJ2126——Prime Path(BFS)

    Prime Path DescriptionThe ministers of the cabinet were quite upset by the message from the Chief of ...

  3. hdu-4893-Wow! Such Sequence!-线段树【2014多校第三场-J】

    题意:一个初始为0的数组,支持三种操作:1.向第k个数添加d,(|d| < 2^31);2.把[l, r]区间内的数字都换成与它最相近的Fibonacci数;3.询问[l, r]区间的和. 思路 ...

  4. 4.cadence原理图,环境设置[原创]

    1.菜单介绍 创建工程,原理图纸 特殊点: 鼠标先点击1,,在选中1后点击2 在Tools菜单下 Annotate:自动编号 back Annotate: 回标 -- DRC规则检测 Create N ...

  5. poj - 3259 Wormholes (bellman-ford算法求最短路)

    http://poj.org/problem?id=3259 农夫john发现了一些虫洞,虫洞是一种在你到达虫洞之前把你送回目的地的一种方式,FJ的每个农场,由n块土地(编号为1-n),M 条路,和W ...

  6. Android实现图片裁切

    介绍 在应用开发中,如果涉及到个人信息,头像一般是不可避免的,类似这种情况,我们就需要用到图片裁切的功能,实现头像裁切,然后上传给服务器. 一般裁切的做法就是图层叠加选取框,然后根据坐标,计算裁切区域 ...

  7. SPOJ 694 (后缀数组) Distinct Substrings

    将所有后缀按照字典序排序后,每新加进来一个后缀,它将产生n - sa[i]个前缀.这里和小罗论文里边有点不太一样. height[i]为和字典序前一个的LCP,所以还要减去,最终累计n - sa[i] ...

  8. Servlet的页面跳转

    Servlet的跳转    内部跳转 req.getRequestDispatcher()        Server--->AServlet--->BServlet        两个S ...

  9. factory工厂模式

    工厂方法模式 工厂方法模式概述    工厂方法模式中抽象工厂类负责定义创建对象的接口,具体对象的创建工作由继承抽象工厂的具体类实现 简单理解: 与简单工厂模式类似,简单工厂模式是一个工厂,用户将条件为 ...

  10. /bin/bash: [xxxx]: command not found

    /******************************************************************************** * /bin/bash: [xxxx ...