一些琐碎的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];
    持续更新中。。。
posted @ 2018-03-08 19:16  McHades  阅读(174)  评论(0编辑  收藏  举报