整理看书过程中要注意的点
1、每个函数都必须指定返回类型,main函数的返回类型为int,通常return 0;,return 语句后面要增加“;”
2、C++文件后缀:cc,cpp,cxx,cp,c,visual C++认 *.cpp
3、输入输出使用iostream库,用cin, cout, cerr, clog,这些都包含在std namespace中
若在文件的开头没有写using namespace std,则用的时候应该是std :: cin
4、建立Visual C++ 工程文件时,选 win32 console application
5、在新的编译器中,在for中定义并初始化的变量,在退出for之后不能再次使用
6、wchar_t(16位)用于拓展字符,如中文、日文
7、short 16位,半个机器字长
int 16位,1个机器字长
在32位系统中,int 和 long有时字长是相同。
8、int 、short、long默认带符号位
不需要带符号需增加unsigned前缀
若仅写unsigned类型,则认为是 unsigned int
9、把-1赋值给unsigned char 类型的数,=255
-1=-1*256+255
C++对溢出的数求模取余
10、float 用32位描述,但只有6个有效位
double用64位描述,有10个有效位
long double 用96或128位描述,有10个有效位
11、以0(零)开头的数字常表示8进制
0x开头的数字常表示16进制
12、指定LONG类型可以在数字后面增加”L“,无符号可以加”u“,float可以加"F",
采用科学计数法时,用E或e表示
在字符面前增加L就能得到wchar_t类型的宽字符面值,如L’a‘
13、为兼容C,C++的string类型的字符串,在字符串的最后会增加一个空字符
如‘A’,是1个字符
“A”,是1个字符A加1个空字符
L“A”,宽字符串
14、两个相邻的字符串(或者两个宽字符串:注,一定要相同类型)或宽字符串,中间如果是空格、制表符、换行符,则分行撰写可以形成一行,如
std::cout<<"I"
“The”
"world"<<std::endl;
将输出 I The world的结果
15、多行面值,可以用反斜杠操作,可将下一行当同一行处理,反斜杠后不能加任何字符,反斜杠的下一行不允许有其他无关字符。
std::cou\
t<<"Hi"<<st\
d::endl
16、回车和换行转义符号的区别
‘\r‘是回车,前者使光标到行首,(carriage return)
‘\n‘是换行,后者使光标下移一格,(line feed)
\r 是回车,return
\n 是换行,newline
对于换行这个动作,unix下一般只有一个0x0A表示换行("\n"),windows下一般都是0x0D和0x0A两个字符("\r\n"),苹果机(MAC OS系统)则采用回车符CR表示下一行(\r)
Unix系统里,每行结尾只有“<换行>”,即“\n”;
Windows系统里面,每行结尾是“<回车><换行>”,即“\r\n”;
Mac系统里,每行结尾是“<回车>”,即“\r”。
一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix下打开的话,在每行的结尾会多车一个^M字符。 写不同的系统代码,要根据系统的要求来编写代码。
第17~24 讲解了变量的初始化方法,变量名的同义定义,常量的定义方法,类型的同义定义,枚举类型的使用,这些在32位嵌入式芯片的程序设计中都是基础中的基础,一定要牢牢掌握,后续再抽空撰写32位内核芯片的常见定义以及相关说明的解读。
17、初始化
直接初始化:
int ival(1024);
复制初始化:
int ival=1024;
直接初始化语法更灵活,效率更高。
在C++中,可以用前面已初始化的变量,初始化下一个变量,如
int a=12,b(a+1);
18、类中,定义如何进行初始化的成员函数称为构造函数。一个类可以定义几个构造函数。当类里面没有构造函数时,则会自动调用默认的构造函数。
初始化一个字符串的三种方法
std::string title="C++ plus";
std::string title2("C++ plus");
也可以通过1个计数器和一个字符初始化string对象
std::string title3(10,‘9‘); //title3=9999999999
19、定义,分配空间和初始值
声明,讲明类型和名字
一个变量只有1个定义,但可以有多个声明(不包含带初始化情况的声明),声明通常配合extern进行
extern表明变量在别处已经定义过。
任何在多个文件中使用的变量都需要有与定义分离的声明,在这种情况下,一个文件含有变量的定义,使用该变量的其他文件则包含该变量的声明。
20、const 把一个对象转换成一个常量,常量在定义后不能修改,所以定义时必须初始化。
例如:
const int bufSize = 512;
21、const 默认为文件的局部变量,所以在其他文件中要使用时,需增加extern 声明。
22、引用,对象的另外一个名字,定义的时候要增加&
在汇编程序中,相当于2个变量EQU同一个寄存器,无论哪个变量名去操作,寄存器的值都会发生变化
int ival = 1024;
int &refval= ival; //引用的定义
refval++
std::cout<<ival; //输出的结果为1025
在常数的定义中,也存在类似的用法,例如,
const int ival=1024;
const int &kval = ival;
23、typedef,定义数据类型的同义词。可以起到隐藏特定类型的目的,同时也使人更容易理解。
typedef double wag;
typedef wag salary; //salary 实际就是double类型
24、枚举类型(关键字:enum)
默认枚举的第一个成员为0,也可以初始化第一个,后面依次+1,例如:
enum form{shape=1,sphere,cylinder,polygon};
但是,枚举的值又不是唯一的,例如
enum point{point2d = 2, point2w ,point3d = 3, point3w}; // point2w = 3; point3w = 4;
point pt1 = point2d;
注意:不能用int的定义,例如: point pt1 = 2;
25、类类型
类的定义以class关键字开始,包含接口(操作:成员函数)和实现(数据:数据成员)两部分;
class Sales_item{
public:
private:
std::string isbn;
unsigned units_sold;
double revenue;
};// “;”号是最容易被遗忘的部分
类可以包含0到多个public或private,每一个类就是一种新的类型。
类的数据成员不是在初始化时定义,而是通过构造函数。
不是类的组成部分的代码,不能访问private 成员,这样可以保护类中的数据成员。
26、struct 关键字(主要从C语言中继承过来) ——在32位芯片程序的开发中常用到,在C语言中struct中不放成员函数,这一点与C++有很大的区别。而在硬件的底层编程中,主要使用C语言类型的结构体,所以要关注这点。
struct中,未使用private部分默认为public;
class中,未使用public部分默认为private;
27、设计自己的头文件
因为头文件包含在多个源文件中,所以不应该含有变量或函数的定义,#ifndef 只能保证在同一个文件中,相同的头文件段值包含一次;若同一个工程文件中的多个文件均有多个变量的定义,则编译的过程会报错。
但是有三个例外:
① 类; ② const 对象; ③ inline 函数
使用头文件的格式有两种:
#include <iostream>//在指定的目录查找标准的头文件
#include"iostream.h"//在源目录查找【工程文件所在的目录】
28、预处理器
预处理器变量的名字在程序中必须唯一,否则其他重复的地方都将关联到预处理器变量
为了避免名字冲突,预处理器变量通常用大写字母
格式:
#ifndef SALESITEM_H
#defineSALESITEM_H
#endif //结束预定义处理
原文地址:https://www.cnblogs.com/lnleelove/p/9751780.html