C++面试速成1
创始人
2025-06-01 17:59:21
  1. 在main函数之前先后指向的代码可能是什么呢?

main函数之前:

  • 设置栈指针

  • 初始化静态变量和全局变量。

  • 将未初始化部分的全局变量赋初值。例如short,int,long=0;

  • 全局对象初始化,在main之前调用构造函数,这是可能会执行前的一些代码

  • 将main函数的参数argc,argv等传递给main函数,然后才真正运行main函数

  • __attribute__((constructor))

main函数之后

  • 全局对象的析构函数会在main函数之后执行;

  • 可以用 atexit 注册一个函数,它会在main 之后执行;

  • __attribute__((destructor))

2 指针和引用的区别:

  • 指针是一个变量,存储的是一个地址,引用跟原来的变量实质上式一个东西,是原变量的别名。

  • 指针可以有多级,引用只有一级

  • 指针可以为nullptr,引用不能为nullptr且定义时必须初始化。

  • sizeof指针得到本指针的大小,sizeof引用得到所指向变量的大小。

  • 当把指针作为参数传递时,也是将实参的一个拷贝传递给形参,两者地址相同,但不是同一个变量,在函数中改变这个变量的指向不影响实参,而引用可以。(!!!)

  • 引用本质是一个常指针,同样会占用四字节,指针是具体的变量,需要占用存储空间。

  • 引用一旦初始化之后就不可以改变了。不存在指向空的引用。

针对第四条测试代码:

int a = 10;int& ya = a;int* pa = &a;char b = 'a';char& yb = b;cout << "a的大小为" << sizeof(a) << endl;cout << "a的引用大小为" << sizeof(ya) << endl;cout << "a的指针大小为" << sizeof(pa) << endl;cout << "b的大小为" << sizeof(b) << endl;cout << "b的引用大小为" << sizeof(yb) << endl;

针对第五条测试:

void test(int *p)
{int a=1;p=&a;cout<

3 什么时候用指针,什么时候用引用呢?

引用能解决问题的就首选引用,否则用指针。

4 堆和栈的区别。

栈空间默认4M,堆区一般是1G-4G,而且空间存储不连续。

5 既然有了malloc/free,c++中为什么还需要new/delete呢?

malloc/free和new/delete都是用来申请内存和回收内存的。在对非基本数据类型的对象使用的时候,对象创建的时候还需要执行构造函数,销毁的时候要执行析构函数。而malloc/free是库函数,是已经编译的代码,所以不能把构造函数和析构函数的功能强加给malloc/free,所以new/delete是必不可少的。

6 strlen和sizeof区别?

  • sizeof是运算符,并不是函数,结果在编译时得到而非运行时。strlen是函数。

  • 因为sizeof值在编译时确定,所以不能用来得到运行时分配存储空间的大小。

7常量指针和指针常量。

常量指针:指针指向的内容一旦确定后便不能改变,但是指向地址中存储的值可以改变。

一般可以这样理解:const 在 * 之后, 例如int * const p;

指针常量:指针指向的一旦确定后,地址中存储的值就不能改变了。但是指向可以改变。

一般可以这样理解 const 在 * 之前。例如 const int *p;

ps:常量指针就是引用。

代码展示:

// 常量指针: 指向则不能改变了,但是可以改变值。int a = 10;int b = 12;int* const p = &a;cout << *p << endl;// 这里会报错,编译就过不去。//p = &b;// 指针常量:引用关系可以改变,但是被引用对象的值不能改变。int a = 10;int b = 12;const int* p = &a;cout << *p << endl;p = &b;cout << *p << endl;//这里会报错,编译过不去。//*p = 100;

相关内容

热门资讯

玩家必看“新琉璃牛牛透视软件辅... 您好:新琉璃牛牛这款游戏可以开挂,确实是有挂的,需要软件加微信【8700483】,很多玩家在新琉璃牛...
{我教教您}“新蛮王牛牛.怎么... 您好:新蛮王牛牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9951342】很多玩家在这款游...
分享实测“新518互游牛牛能不... 您好:新518互游牛牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8700483】很多玩家在...
分享实测“新猴王牛牛到底有辅助... 您好:新猴王牛牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信【5951795】很多玩家在新猴王...
重磅消息“微乐福建麻将到底有挂... 您好:微乐福建麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8598928】或【874-7...