一些琐碎的C/C++知识点
1. C++ 数组作为函数参数
在C/C++中,当数组作为函数的参数进行传递时,数组就自动退化为同类型的指针。(在32位系统中,对任意指针求sizeof结果为4)
2. C++ 中const的用法总结
3. 复制构造函数不允许用传值参数,要使用引用类型
因为在参数为传值参数时,会调用复制构造函数,从而造成死循环,导致栈溢出。
4.在C++中,成员变量的初始化顺序只与他们在类中声明的顺序有关,而与在初始化列表中的顺序无关。没被初始化的值是随机的。
5.计算字符串长度的函数
1、 strlen():
- 头文件:#include <string.h>
- 原型:unsigned int strlen (char *s) //注意,这里的参数是字符指针
- 判断的唯一标准是'\0',该函数会往后遍历,直到碰到'\0'
2、str.length()和str.size():
- 头文件:#include<string>
- using namespace std
- 该函数是用于求string类对象长度的成员函数
- 两者无区别,length是因为沿用C语言的习惯而保留下来的,string类最初只有length,引入STL之后,为了兼容又加入了size,它是作为STL容器的属性存在的,便于符合STL的接口规则,以便用于STL的算法。
6.数组指针和指针数组的区别
注意点:
- 数组“本身”出现在 非sizeof,非 & 后面时,会自动转换为指向数组首元素的指针
- 二维数组的数组名是一个数组指针。例如
int a[4][10]; int (*p)[10]; p=a //a的类型是int (*)[10];
持续更新中。。。