看了一天《c++ primer plus 第五版》
总结一下吧。重新拾起cpp。
1、using namespace std; 名字空间
2、short,int,long,longlong 由计算机cpu的不同而不同,然而对这三种类型有一个约定: short至少16位,int至少与short一样长,long至少与int一样长,long long 至少与long一样长
3、sizeof 关键字使用: sizeof(int); sizeof (a); sizeof a; (a是int的变量) 得到的是这个类型的占内存的大小单位是byte。
4、climit(limit.h)文件包含一些类型数据大小相关的常量 MAX_INT等。
5、char,unsigned char,signed char: char 不确定是否带符号的,这样根据不同的编译器。如果想在不同的平台无关。就要unsigned或signed修饰
6、要支持unicode编码的字符要用wchar_t, 标准输入输出对应的std::wcin 和 std::wcout
7、char[] 与 string(包含<string>) 的异同: 都是对字符操作。 不同之处是,string是一个类,封装了字符串操作的方法,相对操作简单。
8、结构体在c和c++的区别是在c++中声明一个结构体变量的时候省略struct关键字不会出错
struct st{
int a;
int b;
};
c: struct st st1;
c++: struct st st1 或 st st1;
9、结构体可以指定占用特定的位数。用于低级编程
10、共用体,表示里面的元素空用同一个内存,以节省内存。我认为不很常用
11、枚举型 enum={a,b,c}(默认a=0,b=1,c=3) enum={a=0,b=2,c=4}
12、声明指针的时候一定要同时初始化。这不是c++的语法要求,而是程序设计的要求。对一个不知道地址内容的指针操作是非常危险的。而且这种危险发生后也不好确定是问什么。
13、file io : ofstream,ifstream
14、c++中函数原型不是可选的(ansi c中是可选的)。所以必须声明函数原型。
15、const修饰函数的数组型参数,为了防止函数更改数组内容(和java中的final的作用一样)
16、const 修饰指针
int age = 18;
const int * pt = &age
int age2 = 22;
pt = &age2; 是合法的。
*pt = 20; 是不合法的。
age = 20; 是合法的
===========
int * const pt1 = &age2;
*pt1 = 222; 是合法的
pt1 = &age; 是不合法的
总结: 可以理解 pt1和*pt 都是常量; *pt1 和 pt都是可变的量。
17、数组作为函数参数。实际参数传递数组名,实际是数组的首地址。
18、数组作为函数参数的 函数原型 一般的:
int f( int a[],int size); //一维数组
int f( int a[][4],int row) 或
int f( int(*a)[4],int row); // 二维数组,给出了列声明,将行作为参数传递。 注:int *a [4] 表示声明了容量为4的指针数组; int (*a) [4] 表示声明了一个指向容量为4的数组的指针。
19、函数指针其机器代码的内存开始地址;
应用例子:
double f(int);
double f1(int);
void fp(int,double (*ff)(int));
未完待续...