C++ Primer Plus读书笔记01

2012-02-13

new分配到堆上,栈上分自动变量(就是局部变量)

new 不止是分配内存,而且会调用类的构造函数,同理delete会调用类的析构函数,而malloc则只分配内存,不会进行初始化类成员的工作,同样free也不会调用析构函数

2012-02-19

1 sizeof 返回类型或者变量的长度,依赖于不同环境、编译器

        对类型用sizeof,应该加括号,如sizeof(int)

        对变量名,可以省略,如sizeof nMyAge;

2#include<limits>包含INT_MAX,CHAR_BIT等定义

3默认cout以十进制输出

        int waist=0x42;//16进制

        int inseam=042;      //8进制   

        cout<<waist<<inseam;           则输出66,34

        但可通过cout<<dec;

        cout<<hex;

        cout<<oct;将输出改为10、16、8进制

        如int waist=42;

        cout<<hex;//更改为16进制

        cout<<waist;则输出2a

4 const  int  a=12;取代#define  a  12;

5float只表示数字前6、7位精度,所以修改其他位数不影响精度

 float a=2.34E+22f;

float b=a+1.0f;

 cout<<a-b;     //输出0

6 cout.setf(ios_base::fixed,ios_base::floatfield);//加于程序头部

作用:防止将太大数切换为科学计数,保证显示到小数点后6位

7 int thorn;

long test=(long)thorn;//强制转换不修改thorn本身,而是创建一个新的指定类型的值

 也可以用static_cast<long>(thorn);

int auks=19.99+11.99;

cout<<auks;                   //输出31不是30

 

2012-02-21

1、 任何两个由空白分割的字符串常量都将自动拼接成1个

例:cout<<”hello””world”<<endl==cout<<”helloworld”<<endl;

2、 sizeof计算整个数组长度,strlen计算数组中字符串的长度,且不包括’\0’;

string.size()也只计算字符串长度,不包括’\0’,且未被初始化的string.size()==0

可通过人为在char数组中添加’\0’来更改终止位。比如name[3]=’\0’

3、char arr[20];    cin.getline(arr,20);  getline()每次读取一行,通过换行符来确定行尾,但不保存换行符,用空字符替代换行符。 get()也是每次读取一行,但会将换行符保存在队列中,上条语句等价于cin.get(arr,20);    cin.get()//读取回车

两种方法均返回string类型,所以可以用cin,get(arr,20).get()来取代上两句

同理,可用cin.getline(arr1,20).getline(arr2,20)  一次读取两个数组。

另外,如果之前进行过输入操作(如输入年龄),则换行符会停留在缓冲区,用cin.get()消除,否则直接进行cin.getline()会出错

4      strcpy(charr1,charr2)                    //copy charr2 to charr1

        strcat(charr1,charr2)                     //append contents of charr2 to charr1

原文地址:https://www.cnblogs.com/yangtianxing/p/2435005.html