c语言八股
时间: 2025-04-27 15:33:27 浏览: 25
### C语言常见面试题及答案
#### 一、算术交换两个变量的值
考虑如下代码片段用于不借助额外空间来交换 `a` 和 `b` 的值:
```c
#include <stdio.h>
int main() {
int a = 10;
int b = 20;
a = a + b; // a becomes 30
b = a - b; // b becomes 10 (original value of a)
a = a - b; // a becomes 20 (original value of b)
printf("a=%d\n", a);
printf("b=%d\n", b);
return 0;
}
```
上述方法利用加减法实现了两数值互换的效果[^1]。
#### 二、关于数组作为参数传递给函数的行为特性
当把数组名当作实参传入某个函数时,实际上传送的是该数组第一个元素的位置信息——也就是所谓的“首地址”。这意味着任何针对形参所指向内存区域内的修改都会反映到原数组上。这种机制允许程序员直接操作外部定义的数据结构而无需复制整个数据集[^2]。
#### 三、字符转整型的方法
对于字符串形式表示的一个数字或者单个ASCII码对应的字符想要得到相应的十进制整形数可以使用标准库中的特定功能实现转换过程。具体来说就是调用`atoi()` 函数完成这项工作;如果只是处理单独的一位字母,则可以用更简单的办法比如直接相减'0'(即48),因为英文字母表里连续排列着阿拉伯数码字元与其编码之间存在固定偏移量关系。
#### 四、局部静态变量的作用范围及其特点
局部静态变量是在栈帧之外分配存储空间的一种特殊类型的自动对象。它们具有以下属性:
- 生命周期贯穿于应用程序执行期间;
- 同一个作用域下的多次访问会保持之前的状态不变;
- 默认初始化为零值。
下面的例子展示了如何运用这一概念统计某子程序被触发了多少回次以及演示初始状态设定的方式[^3]。
```c
void countCalls(void){
static int counter = 0;
++counter;
printf("%d ", counter);
}
// 调用此函数两次将会打印出 "1 2"
countCalls();
countCalls();
```
阅读全文
相关推荐

















