c++ primer plus 学习笔记

今天药忘吃喽~ 2022-01-05 15:55 314阅读 0赞

我的机子用Xcode,单位是字节

0开头为8进制

0x为16进制

cout默认输出的是10进制

wchar_t 宽字节,它是一种足够大的整形类型,可以用来表示的是比如中文的编码

c常量一旦被定义,就不能被修改(const)

浮点数,c++中浮点数在计算内存中由两部分组成,一部分为基数,一部分用来表示浮点,这个浮点是用二进制来表示。

非常大或者非常小的数可以用e表示法来表示

这个程序充分说明了精度的问题,double能保存更高的精度。对于c++来说float只能保存6位有效数字,如果需要更高的精度,使用double。 在默认情况下,浮点数的类型是double。

涉及不同类型的数进行运算,首先会把精度小的数转化为精度大的数。

auto 相当于var类型

尽量让编译器去计算元素数目更为安全。数组比字符串长,没有什么害处。

’s’ 和 “s”的区别, ’s’是一个单字符,代表一个ASCII码,而”s”代表2个字符’s’和’\n’。

使用cin中的get()或者getline(),getline()读取一条语句。

可以用数组的访问形式来访问string类型。

区别字符数组和string之间操作之间的差别。

对字符数组来说用在类中得strcpy,strcat,strlen来进行复制和连接作用。

string的大小可以自动调整,也就是说可以在一个string类型变量后面不断加上字符串

而字符数组不行。

对于字符型数组来说,如果未被定义就使用strlen方法来数组长度的话,可能与字符数组定义的长度不一。strlen从数组的第一个元素开始计算字节数,直到遇到空字符。对于未被初始化的数组,空字符的出现是随机的,所以得到的数组长度可能与定义的不同

struct ,union 的区别

union一次只使用一个成员变量,即成员变量是在一块内存中的。

枚举类型的取值范围是大于最大值的最小2的幂减一。

double占用8个字节 int float4字节(我的)

在指针使用的时候特别注意下面的情况

这里说明的是指针初始化后,给地址分配了内存空间,但是他的值的内容并没有分配空间,所以直接使他的内容为单值是错误的。

数组其实和指针有很大的联系,数组可以看作一个指针,数组定义后,可以用指针的操作符去操作数组,

cout 和cin对于指针的使用,对于字符数组和字符串传入的是一个地址,而且是首个字符的地址。

所以cout<<ps——-可以打印他们的值,如果要显示他们的地址则cout<<(int *)ps ,这个时候才会打印ps指针和字符串的地址。

但是对于值类型来说,如 int *p cout<<p 则打印的是p的地址。

chark[]=”helloworld”;
char* ps=newchar(strlen(k)+1);

strcpy(ps,k);

创建新的副本

用strcpy和strncpy来将字符串赋值给数组。

这里相当于c#里的foreache语句,对于要改变数组值的地方用&x,而输出的话直接x;

EOF的使用xcode 是用ctrl+d的组合。

c++中将一指针数组初始化为一组字符串常量;

cin>>c;这个表达式也会有一个返回值,比如c是整型的,但是输入的却是个字符串,则返回false,输入的字符串还是保存在缓存区。

c++函数无法返回一个字符串 所以只能返回他的地址

这时候 函数中要创建一个新的指针变量 长度为字符串的长度加1 最后一位赋值为n+1

//c++函数指针——指正需要都用小括号括起来

double calculate(double x,double y, double (*p)(double,double)){

return p(x,y);

}

c++的泛型方法当有个特殊类型需要特殊对待的时候可以采取

template<> char * maxn(char * arr[],int arrSize)

的显示声明。

chaff *sc= new (buffer) chaff [2]; //method 1——在buffer的第一个元素内存上创建,buffer是个数组,这两个元素共用一个存储空间

对于一个事物存在多种状态,通常都是通过声明一个public的枚举,再在私有属性中添加个对象来表示不同的状态,比如坐标的直角坐标和极坐标

对于赋值运算符的重载,在构造函数中如果有new运算符,这这里需要先清除当前的内存,然后再进行赋值操作

  1. 模板类型:

模板类型不是一种实类型,它必须等到类型绑定后才能确定最终类型,所以在实例化一个模板时,必须要能够让编译器“看到”在哪里使用了模板,而且必须看到模板确切的定义,而不仅仅是它们的声明,都则不能顺利地产生编译代码。因此,标准会要求模板的实例化与定义体放到同一编译单元中。

虚基类的作用:

多继承的基础上,使多层继承的子类所继承的相同的方法都来自基类

转载于:https://www.cnblogs.com/KyleRuan/p/4322399.html

发表评论

表情:
评论列表 (有 0 条评论,314人围观)

还没有评论,来说两句吧...

相关阅读