- 指针和引用的区别
- 指针常量和常量指针的区别
- sizeof() 和 strlen()的区别
- const关键字
- static关键字
- C++中struct和class的区别
- new/malloc和deete/free的区别
- 宏定义和typedef区别
- 野指针和悬空指针
-
指针是一个变量,存储的是内存中的一个地址,引用只是一个别名,和原来变量是同一个东西
-
指针可以有多级,引用只能有一级,不存在多级引用
-
指针在初始化是可以为空,在定义时可以不进行初始化(但是不建议,使用未初始化的指针可能会造成野指针的情况),但是引用必须要进行初始化且引用不能为空
-
sizeof(指针)得到是指针的大小(32位机大小为4, 64位机大小为8),sizeof(引用)得到的指向的变量的大小
-
引用一旦经过初始化后就不能被改变,指针经过初始化后还能够重新改变指向
- 指针常量:指针常量是对指针做限制,因此我们不能修改他的指向,但可以修改它所指向的内容,简而言之就是地址不能改变,内容可以改变
- 常量指针:常量指针是对常量做限制,因为我们不能修改它的内容,但能够修改他的指向
- sizeof是关键字不是函数是关键字不是函数是关键字不是函数,strlen是字符处理函数
- sizeof参数可以为任何数据的类型或者数据,strlen的参数只能是字符指针,且计算大小时到‘ ’结尾
-
const常量必须要在定义时进行初始化,之后无法更改
-
const形参可以接受const参数和非const参数
-
const对象只能调用const成员函数,非const成员既可以调用const成员函数,也可以调用非const成员函数
- 隐藏 所有不加static的全局变量和函数都具有全局可见性,可以在其他文件中使用,加了之后对于其他文件不可见
- static变量默认初始化为0,存储在静态区
- static成员变量只与类关联,不与对象关联,每个类只有一个,需在类中定义,在类外初始化
- static成员函数不具有this指针,由于没有this指针,所以无法调用非static成员函数和非static成员变量
- 相同点
- 两者都可以添加成员变量和成员函数,权限都有共有和私有部分
- 在C++中struct和class没有区别
- 不同点
- struct默认public,class默认private
- class默认private继承,struct默认public继承
tip:
- 在c语言中,struct是用户自定义数据类型,里面不可以添加成员函数,在C++中可以添加成员函数



