C++和C的区别
设计思想上:
C++是面向对象的语言,而C是面向过程的结构化编程语言
语法上:
C++具有封装、继承和多态三种特性
C++相比C,增加了许多类型安全的功能,比如强制类型转换
C++支持范式编程,比如模板类、函数模板等
C++中指针和引用的区别
- 指针有自己的一块空间,而引用只是一个别名
- 使用sizeof计算一个指针的大小为4,而引用则是被引用对象的大小
- 指针可以初始化为空,而引用必须被初始化且必须是一个已有对象的引用
- 作为参数传递时,指针需要被解引用才可以对对象进行操作,而对引用的修改都会直接改变引用所指的对象
- 可以有const指针,但没有const引用
- 指针可以指向其他对象,但引用只能是一个对象的引用,不能被改变
- 如果返回动态内存分配的对象或者内存,必须使用指针,引用可能引起内存泄漏
指针和数组的区别
数组:数组用于存储多个相同类型数据的集合,地址是连续的
指针:指针相当于一个变量,存放的是内存中的地址
区别:
• 赋值:同类型指针变量可以相互赋值,数组不行,只能一个一个元素的赋值或拷贝
• 存储方式:数组:数组在内存中是连续存放的,开辟一块连续的内存空间。数组是根据数组的下进行访问的,多维数组在内存中是按照一维数组存储的,只是在逻辑上是多维的。指针:指针很灵活,它可以指向任意类型的数据。指针的类型说明了它所指向地址空间的内存。
• 求sizeof:数组所占存储空间的内存:sizeof(数组名),数组的大小:sizeof(数组名)/sizeof(数据类型)。在32位平台下,无论指针的类型是什么,sizeof(指针名)都是4,在64位平台下,无论指针的类型是什么,sizeof(指针名)都是8。
• 初始化方式不同。
• 传参方式:数组传参时,会退化为指针,C语言将数组的传参进行了退化。将整个数组拷贝一份传入函数时,将数组名看做常量指针,传数组首元素的地址。一级指针传参可以接受的参数类型:(1)可以是一个整形指针 (2)可以是整型变量地址 (3)可以是一维整型数组数组名;当函数参数部分是二级指针时,可以接受的参数类型:(1)二级指针变量(2)一级指针变量地址(3)一维指针数组的数组名