来源: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. JLink v8克隆版破解向导(此方法仅适用XP32位版 WIN7及以上和64位均不支持 建议使用虚拟机)

    此方法仅适用XP32位版 WIN7及以上和64位均不支持 建议使用虚拟机 摘要 Jlink 4.5版本之后驱动会识别老的克隆版的JlinkV8,Jlink软件在启动时会提示为克隆版本后退出.目前主流的 ...

  2. ECharts本地部署

      将下载的包解压,再将包内文件copy到C:\inetpub\wwwroot下 在html中做如下引用: <script type="text/javascript" sr ...

  3. 拥有更好性能的requesAnimationFrame(Better Performance with requestAnimationFrame)

    介绍: 这篇文章讨论的是你可以(也应该)学习通过使用requestAnimationFrame API,而不是使用之前的setInterval/setTimeout方法,来提高动画的性能:如何使用re ...

  4. Jquery瀑布流布局

    瀑布流布局最近真的很流行,很多人都跟我一样想知道是怎么做出来的吧,经过网上搜索大量的参考结合N边的实验今天终于被我写出来了,为了便于大家理解我使用了jQuery(当然用源生js代码执行的效率会高一些, ...

  5. 阿里Druid数据库连接池使用

    阿里巴巴推出的国产数据库连接池,据网上测试对比,比目前的DBCP或C3P0数据库连接池性能更好 可以监控连接以及执行的SQL的情况. 加入项目的具体步骤: 1.导入jar <parent> ...

  6. 在ump系统的那半个多月-jqGrid

    2012.04统一监控平台项目打酱油的日子 系统介绍: 目标,致力于服务于公司内部的所有系统,对所有接入监控的系统进行监控,包括系统监控,URL存活监控,端口存活监控,方法监控等. 作为打酱油的我,没 ...

  7. Android中的sp与wp

    一.相关code文件 二.code具体分析 lightrefebase: refbase: sp: wp: flag: 三.使用注意事项 不能在把目标对象赋给一个长久存在的sp对象之前赋给一个短生命周 ...

  8. OpenJDK和OracleJDK的JVM性能有多大差距

    首先要先明确OpenJDK和Sun/OracleJDK之间,以及OpenJDK 6.OpenJDK 7.OpenJDK 7u和OpenJDK 8等项目之间是什么关系,这有助于确定接下来编译要使用的JD ...

  9. Spring 注解@Transactional

    Spring事务的传播行为 在service类前加上@Transactional,声明这个service所有方法需要事务管理.每一个业务方法开始时都会打开一个事务. Spring默认情况下会对运行期例 ...

  10. [51NOD1127]最短的包含字符串(尺取法)

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1127 思路:尺取法,一开始我考虑更新右指针,直到遇到一个和l指 ...