C/C++ 一些常见的面试题(一)

1.memset、memcpy、strcpy之间的根本区别?
 memset:用来对一段内存空间全部设置为某个值,一般用于对定义的字符串进行初始化为某个值
 memcpy:用于内存拷贝,可以拷贝任何数据类型的对象,可以指定拷贝的数据长度
 strcpy:可以拷贝字符串,遇到’\0’结束拷贝

2.常量指针和指针常量的区别?
  const char * p ( 常量指针):本质上是一个指针,常量表示指针指向的内容,常量指针中,指针指向的内容不可变。
  char * const p(指针常量):本质上是一个常量,是指针类型的常量,指针常量中,指针指向的地址不可变。

3.链表和数组的区别?

  • 数组在内存中是一块连续的空间来存储数据,链表在内存中是一块不连续的空间,靠指针来连接多块不连续的空间,在逻辑上形成一块连续的空间
  • 数组占用内存小,空间连续。 链表占用内大,空间不连续
  • 数组方便排序和查找,但是插入和删除较慢。 链表方便插入和删除,但是排序和查找较慢。

4.全局变量和局部变量有什么区别?是怎么实现的,操作系统和编译器是怎么知道的?
  生命周期不同:全局变量随主程序的创建而创建,随主程序的销毁而销毁,局部变量在局部函数内部,甚至局部循环体中存在,退出就不存在了。
  使用方式不同:声明全局变量,整个程序都可以用到。局部变量只能在局部函数中使用,分配在栈区。

5.函数传递过程中,值传递、址传递、引用传递有什么区别?
值传递:会为形参分配内存空间,将实参的值拷贝给形参,形参的值的改变不影响实参,函数调用结束后形参释放
址传递:形参是指针变量,将实参的地址给函数,可以在函数中改变实参的值,调用时为形参指针分配内存空间,结束时释放指针变量。
引用传递:不会分配内存空间,形参只是实参的别名,形参值的改变会影响实参值,函数结束后不会释放形参。
6.引用和指针有什么区别?

  • 引用必须初始化,而指针不需要,引用不占用内存
  • 引用初始化之后不能改变,指针可以改变所指对象
  • 不存在指向空值的引用,存在指向空值的指针
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值