C++常见面试题(一)

C++和C的区别

设计思想上:
C++是面向对象的语言,而C是面向过程的结构化编程语言
语法上:
C++具有封装、继承和多态三种特性
C++相比C,增加了许多类型安全的功能,比如强制类型转换
C++支持范式编程,比如模板类、函数模板等

C++中指针和引用的区别

  1. 指针有自己的一块空间,而引用只是一个别名
  2. 使用sizeof计算一个指针的大小为4,而引用则是被引用对象的大小
  3. 指针可以初始化为空,而引用必须被初始化且必须是一个已有对象的引用
  4. 作为参数传递时,指针需要被解引用才可以对对象进行操作,而对引用的修改都会直接改变引用所指的对象
  5. 可以有const指针,但没有const引用
  6. 指针可以指向其他对象,但引用只能是一个对象的引用,不能被改变
  7. 如果返回动态内存分配的对象或者内存,必须使用指针,引用可能引起内存泄漏

指针和数组的区别

数组:数组用于存储多个相同类型数据的集合,地址是连续的
指针:指针相当于一个变量,存放的是内存中的地址
区别:
• 赋值:同类型指针变量可以相互赋值,数组不行,只能一个一个元素的赋值或拷贝

• 存储方式:数组:数组在内存中是连续存放的,开辟一块连续的内存空间。数组是根据数组的下进行访问的,多维数组在内存中是按照一维数组存储的,只是在逻辑上是多维的。指针:指针很灵活,它可以指向任意类型的数据。指针的类型说明了它所指向地址空间的内存。

• 求sizeof:数组所占存储空间的内存:sizeof(数组名),数组的大小:sizeof(数组名)/sizeof(数据类型)。在32位平台下,无论指针的类型是什么,sizeof(指针名)都是4,在64位平台下,无论指针的类型是什么,sizeof(指针名)都是8。

• 初始化方式不同。

• 传参方式:数组传参时,会退化为指针,C语言将数组的传参进行了退化。将整个数组拷贝一份传入函数时,将数组名看做常量指针,传数组首元素的地址。一级指针传参可以接受的参数类型:(1)可以是一个整形指针 (2)可以是整型变量地址 (3)可以是一维整型数组数组名;当函数参数部分是二级指针时,可以接受的参数类型:(1)二级指针变量(2)一级指针变量地址(3)一维指针数组的数组名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值