必背八股文-C/C++(1)

C++C的区别

思想上:C++是面向对象的语言,C语言是面向过程的结构化编程语言

语法上:

1)C++具有封装、继承、多态三种特性

2)C++增加了许多类型安全功能,比如强制转换类型

3)C++支持范式编程,比如模板类、函数模板等

C++内存管理(程序进程中的分区)

1) 栈区:由编译器自动分配和释放,存放函数的参数、局部变量、返回值等

2) 堆区:一般由程序员分配和释放(malloc/free、new/delete)

3) 代码段:包括只读存储区和文本区,只读存储区存储字符串常量,文本区存储程序的机器代码

4) 数据段:存储程序中已初始化的全局变量和静态变量

5) BSS段:存储未初始化的全局变量和静态变量

若按内存地址的分配角度:全局静态区、文字常量区、程序代码区、堆区、栈区

内存泄漏分类

1) 堆内存泄漏:通过malloc/new等内存分配,但忘了free或delete

2) 系统资源泄露:主要指程序使用系统分配的资源(Bitmap、handle、SOCKET)但没有使用相应的函数释放掉

3) 没有将基类的析构函数定义为虚函数

关键字static的作用

在C/C++中,关键字static有两种用法:

• 修饰变量:使变量在程序运行期间仅被初始化一次,并且作用域只在定义该变量的源文件内部,即静态局部变量和静态全局变量。

• 修饰函数:将函数的作用域限制在定义该函数的源文件内部,即静态函数。

在C语言中,为什么static变量只初始化一次?

静态变量是存储在全局数据区中的变量,程序运行时会在该区域分配一块固定的内存空间,因此静态变量只需要在程序运行期间初始化一次即可。

静态变量什么时候初始化?

静态变量的初始化是在程序执行之前进行的,即在程序加载到内存时就已经完成了初始化,如果没有赋初值,静态变量会默认初始化为0。

简述static对于工程模块化的作用

使用static关键字定义静态变量或者静态函数,可以限制其作用域只在当前源文件内部,这样就可以避免在其他源文件中重复定义同名变量或函数,从而保证程序的模块化和可移植性。

static修饰局部变量和全局变量会有什么效果

1.修饰局部变量:当用于修饰局部变量时,它会改变局部变量的生命周期和存储位置。

• 生命周期:通常情况下,局部变量的生命周期在函数调用期间。当函数返回时,局部变量会被销毁。但是,当局部变量被声明为时,它的生命周期会延长至整个程序运行期间。这意味着在多次调用函数时,局部变量会保留上次调用时的值。

• 存储位置:通常情况下,局部变量存储在栈上。但是,当局部变量被声明为时,它会被存储在静态存储区(或数据段),而不是栈上。

2.修饰全局变量:当用于修饰全局变量时,它会影响变量的可见性和链接。

• 可见性:全局变量的作用域仅限于定义该变量的源文件。这意味着其他源文件无法直接访问此变量。这有助于将变量的作用域限制在本地,避免命名冲突和不小心修改全局变量的问题。

• 链接:全局变量具有内部链接属性。这意味着在链接过程中,该变量不会与其他源文件中的同名变量发生冲突。

extern作用

extern是一个关键字,用于声明一个变量或函数是在其他源文件中定义的,在本文件中不会被分配内存空间,而是在链接时与其他源文件一起链接生成可执行文件。

extern "C"的作用

extern "C"用于声明一段C语言的代码,可以在C++代码中调用这段代码。C++代码和C语言代码的函数调用方式不同,C++使用函数的符号名称包含参数类型信息,而C语言使用函数的符号名称不包含参数类型信息。使用extern "C"可以将C++代码中函数的符号名称修改为C语言的符号名称,使得C++代码可以调用C语言的函数。

const作用

const是一个关键字,用于声明一个变量为常量,即其值在程序运行期间不可修改。const变量在定义时必须进行初始化,否则编译器会报错。

什么情况下使用const关键字?

当程序中的某个变量的值在程序运行期间不应该被修改时,可

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

本专栏主要是介绍嵌入式软件开发岗位的相关知识和学习攻略,为大家提供一份笔试与面试手册。包括有嵌入式软件开发岗位介绍与学习攻略;校园招聘和offer疑惑问题的介绍;在笔试方面,如何刷题为笔试作准备,提供往年笔试真题;在面试方面,提供相关知识的复习重点,提供面试真题。包括有:华为、蔚来、文远、大疆、三一、深信服、亚马逊、Intel、百度、科大讯飞、OPPO、京东、中兴、比特大陆|算能、美团等等

全部评论
打卡
点赞 回复 分享
发布于 02-15 20:41 山东
顶层const表示指针本身是常量,不能修改指针指向的内容,而底层const表示指针指向的内容是常量,不能修改指针指向的内容。 这能对吗,哥们!Passion😀
点赞 回复 分享
发布于 09-10 20:36 美国

相关推荐

ProMonkey2024:5个oc?厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了(别的帖子偷来的,现学现卖😋)
点赞 评论 收藏
分享
尊尼获获:闺蜜在哪?
点赞 评论 收藏
分享
3 82 评论
分享
牛客网
牛客企业服务