华为C++面试题解析
需积分: 9 8 浏览量
更新于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 的作用域是整个源程序。
139 浏览量
682 浏览量
177 浏览量
180 浏览量
300 浏览量
337 浏览量
374 浏览量
244 浏览量
128 浏览量
hjc123321123
- 粉丝: 0
- 资源: 2
最新资源
- SAP服务器端安装手册
- MATLAB编程(第二版)-菜鸟入门教材
- The C++ Programming Language Special 3rd Edition
- Eclipse中安装SVN插件
- 微软Speech SDK 5.1开发语音识别系统的主要步骤
- ExtJs简明教程使用ExtJs
- smallworld GoogleEarth配置
- VS2005微软官方教程
- smallworld安装
- 空间数据处理插值 -非常系统
- 编写shell脚本编写shell脚本编写shell脚本
- 新编Windows API参考大全
- smallworld使用配置
- OSWorkflow教程
- OSWorkflow中文手册
- C#连接各种数据库的方法