华为C++面试题解析
需积分: 9 67 浏览量
更新于2024-07-18
收藏 488KB PDF 举报
华为 C++ 面试题详解
以下是对华为 C++ 面试题的详细解释:
**1. 局部变量能否和全局变量重名**
答案:能,局部会屏蔽全局。要用全局变量,需要使用"::"
解释:在 C++ 中,局部变量和全局变量可以同名,局部变量会屏蔽全局变量。在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。例如:
```cpp
int x = 10; // 全局变量
void foo() {
int x = 20; // 局部变量
cout << x << endl; // 输出 20
}
```
在上面的例子中,局部变量 x 会屏蔽全局变量 x。要使用全局变量,需要使用作用域解析运算符 "::",例如:
```cpp
int x = 10; // 全局变量
void foo() {
int x = 20; // 局部变量
cout << ::x << endl; // 输出 10
}
```
**2. 如何引用一个已经定义过的全局变量**
答案:extern
解释:可以使用 extern 关键字来引用已经定义过的全局变量。例如:
```cpp
// header.h
extern int x;
// main.cpp
int x = 10; // 定义全局变量
void foo() {
cout << x << endl; // 输出 10
}
```
在上面的例子中,我们在 header.h 中使用 extern 关键字来声明全局变量 x,然后在 main.cpp 中定义该变量。在 foo 函数中,我们可以使用该变量。
**3. 全局变量可不可以定义在可被多个 .C 文件包含的头文件中**
答案:可以,在不同的 C 文件中以 static 形式来声明同名全局变量。
解释:在不同的 C 文件中,可以声明同名的全局变量,但需要使用 static 关键字来限定其作用域。例如:
```cpp
// a.cpp
static int x = 10;
// b.cpp
static int x = 20;
```
在上面的例子中,我们在 a.cpp 和 b.cpp 中声明了同名的全局变量 x,但使用 static 关键字来限定其作用域,使得它们不会冲突。
**4. 语句 for(;1;)有什么问题它是什么意思**
答案:和 while(1) 相同。
解释:语句 for(;1;) 等同于 while(1),都是一个无限循环。例如:
```cpp
for (; 1;) {
cout << "Hello, world!" << endl;
}
```
上面的代码将无限循环地输出 "Hello, world!"。
**5. do……while 和 while……do有什么区别**
答案:前一个循环一遍再判断,后一个判断以后再循环
解释:do-while 语句和 while 语句的主要区别在于循环的执行顺序。do-while 语句先执行循环体,然后判断条件,而 while 语句先判断条件,然后执行循环体。例如:
```cpp
int i = 0;
do {
cout << i << endl;
i++;
} while (i < 5);
int j = 0;
while (j < 5) {
cout << j << endl;
j++;
}
```
在上面的例子中,do-while 语句先执行循环体,然后判断条件,而 while 语句先判断条件,然后执行循环体。
**6. 请写出下列代码的输出内容**
答案:10, 12, 120
解释:该代码使用了自增运算符和printf 函数。自增运算符的优先级高于赋值运算符,因此 a++ 的值将被赋值给 b,++a 的值将被赋值给 c,10*a++ 的值将被赋值给 d。最终输出的结果为 10, 12, 120。
**7. static 全局变量与普通的全局变量有什么区别**
答案:static 全局变量的作用域限制在定义该变量的源文件内,而普通的全局变量的作用域是整个源程序。
解释:static 全局变量和普通的全局变量的主要区别在于作用域。static 全局变量的作用域限制在定义该变量的源文件内,而普通的全局变量的作用域是整个源程序。例如:
```cpp
// a.cpp
static int x = 10;
// b.cpp
int x = 20;
```
在上面的例子中,static 全局变量 x 的作用域限制在 a.cpp 中,而普通的全局变量 x 的作用域是整个源程序。
2008-11-29 上传
2018-08-01 上传
2013-08-07 上传
2013-03-25 上传
2024-11-13 上传
2024-11-13 上传
2024-11-13 上传
hjc123321123
- 粉丝: 0
- 资源: 2
最新资源
- 黑板风格计算机毕业答辩PPT模板下载
- CodeSandbox实现ListView快速创建指南
- Node.js脚本实现WXR文件到Postgres数据库帖子导入
- 清新简约创意三角毕业论文答辩PPT模板
- DISCORD-JS-CRUD:提升 Discord 机器人开发体验
- Node.js v4.3.2版本Linux ARM64平台运行时环境发布
- SQLight:C++11编写的轻量级MySQL客户端
- 计算机专业毕业论文答辩PPT模板
- Wireshark网络抓包工具的使用与数据包解析
- Wild Match Map: JavaScript中实现通配符映射与事件绑定
- 毕业答辩利器:蝶恋花毕业设计PPT模板
- Node.js深度解析:高性能Web服务器与实时应用构建
- 掌握深度图技术:游戏开发中的绚丽应用案例
- Dart语言的HTTP扩展包功能详解
- MoonMaker: 投资组合加固神器,助力$GME投资者登月
- 计算机毕业设计答辩PPT模板下载