IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 全网最全面最精简C/C++高频面试点(实时更新) -> 正文阅读

[C++知识库]全网最全面最精简C/C++高频面试点(实时更新)

引言

本篇结合多段面试经历,在参考大量优质博客基础上,言简意赅地总结出如下C/C++高频面试点

目录

  • C语言
    • switch
    • do{…}while(0)
    • 枚举
    • 结构体与共用体
    • 全局变量与局部变量
    • 数据类型

C语言

switch

switch语句允许测试变量与值列表的相等性,每个值称之为案例或者case,程序会检查switch后面的值并且与case后面的值比对,如果相等则执行后面的代码或代码块
switch执行流程

  1. 当switch后面的变量值和case后面的常量值匹配相等后,case后面的代码将会被执行,直到break语句被执行后跳出switch代码块
  2. break不是必须的,如果没有break,则执行完当前case的代码块后会继续执行后面case代码块的内容,直到执行break才可以退出
  3. switch有一个默认的情况,我们用default关键词表示,当switch后面的变量和所有case后面的常量都不匹配的情况下,默认执行default后面的语句

注意:

  1. switch语句中使用的表达式必须具是int或enum类型,否则如float等其他数据类型是无法通过的编译的,因为编译器需要switch后面的语句和case后面的值精确匹配,而计算机无法精确表达一个float数据类型
  2. switch可以任意个case语句(包括没有), 值和语句之间使用:分隔
  3. case后面的值必须是int常量值,或者返回结果为int类型的表达式

do{…}while(0)

在实际开发过程中,循环更多采用for和while,而do{…}while()主要有以下作用:

#define是在预处理的时候进行直接替换,缺少相应的语法检查机制,如下:

#define LOG {print();send();};
void print()
{
	cout<<"print: "<<endl;
}
void send()
{
	cout <<"send: "<<endl;
}
int main(){
	if (false)
		LOG
	cout <<"hello world"<<endl;
	system("pause");
	return 0;

if经过预处理替换会变成:

	if (false)
	{
		print();
		send();
	};
	else
	{
		cout <<"hello"<<endl;
	}

因为if语句后面多加了个;而编译不通过
用do{…}while(0);可以包裹住要操作的#define,无论外面如何操作,都不会影响#define的操作:

 #define LOG do{print();send();}while (0);
 int main(){
		if (false)
		LOG
	else
	{
		cout <<"hello"<<endl;
	}
 	cout <<"hello world"<<endl;
	system("pause");
	return 0;
}

if则会变成:

	if (false)
		do{
			print();
			send();
		}while (0);
	else
	{
		cout <<"hello"<<endl;
	}
 	cout <<"hello world"<<endl;

编译通过

枚举

枚举类型是C语言和C++中的一种派生数据类型,它是由用户定义的若干枚举常量的集合,所谓"枚举"是指将变量的值一一列举出来,变量的值只能在列举出来的值的范围内
注意:

  1. 第一个名称的值为 0
  2. 默认情况下,每个名称都会比它前面一个名称大 1
enum color1
 { 
 		red, 
 		green, 
 		blue 
 } c1;
c1 = blue;  //red的值为 0,green的值为 1,blue 的值为 2,c1的值为2

enum color2
 { 
 		red, 
 		green=5,
 		blue 
 };c2
 c2 = blue; //red的值为 0,green的值为 5,blue 的值为 6,c2的值为6

结构体与共用体

定义:

  1. 结构体是C/ C++ 中另一种用户自定义的可用的数据类型,它允许存储不同类型的数据项
  2. 共用体是一种特殊的数据类型,允许在相同的内存位置存储不同的数据类型,可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值,共用体提供了一种使用相同的内存位置的有效方式

区别:

  1. 结构体占用的内存是所有的成员各自占用的内存空间之和
  2. 共用体占用的内存则不同,等于占用内存空间最大的那个成员

注:共用体是共用内存空间,所以每个成员都是读写同一个内存空间,那么内存空间里面的内容不停的被覆盖,而同一时刻,都只能操作一个成员变量

union Data{
   int i;
   float f;
   char  str[20];
};
int main( ){
   union Data data;       
   data.i = 10;
   data.f = 220.5;
   strcpy( data.str, "C Programming");
   printf( "data.i : %d\n", data.i);
   printf( "data.f : %f\n", data.f);
   printf( "data.str : %s\n", data.str);
   return 0;
}

结果如下:

data.i : 1917853763
data.f : 4122360580327794860452759994368.000000
data.str : C Programming

我们可以看到共用体的 i 和 f 成员的值有损坏,因为最后赋给变量的值占用了内存位置,这也是 str 成员能够完好输出的原因

全局变量与局部变量

定义:

  1. 在函数或一个代码块内部声明的变量,称为局部变量。它们只能被函数内部或者代码块内部的语句使用
  2. 在所有函数外部定义的变量(通常是在程序的头部),称为全局变量。全局变量的值在程序的整个生命周期内都是有效的

初始化:

  1. 定义局部变量时,系统不会对其初始化,必须自行对其初始化
  2. 定义全局变量时,系统会自动初始化为下列值

int — 0 char — ‘\0’ float — 0 double — 0 pointer — NULL

注意:局部变量和全局变量的名称可以相同,但是在函数内,局部变量的值会覆盖全局变量的值

数据类型

32位

类型字节大小
char1
short2
int4
long
float4
long long8
double8

指针类型:均为4字节

64位

类型字节大小
char1
short2
int4
long4
float4
long long8
double8

指针类型:均为8字节

类型转换

类型转换图

// 普通转换
int sum = 7; 
double mean = sum / 5; //mean为 1.0
// 强制转换
int sum = 17;
double mean = (double) sum/5//mean为1.4

数组指针与指针数组

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-19 11:52:27  更:2021-08-19 11:52:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 11:51:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码