c语言面试常见问题

1.a++   ++a  区别

第一种情况:
a=3;
b=a++;
运行后
b=3a=4

第二种情况:
a=3;
b=++a;
运行后
b=4a=4.

2.  ~ 按位取反;“>>代表右移运算符,就相当于shr。该运算符为双目运算符,结合方向为从左到右,作用是把一个整型数的所有位向右移动指定的位数,移动到右边界之外的多余二进制位会被丢弃,并从左边界移入0

 

 

### C语言面试常见问题及答案 #### 1. `atoi` 函数的作用是什么? `atoi` 是标准库函数,用于将字符串转换为整数。它的原型如下所示: ```c int atoi(const char *str); ``` 此函数会读取输入字符串并将其解释为十进制整数值[^2]。 #### 2. 结构体和共用体的区别有哪些? 结构体(struct)和共用体(union)的主要区别在于存储方式以及成员访问机制: - **结构体**:每个成员都有自己的独立存储区域,整体大小等于各成员占用的空间总和。 - **共用体**:所有成员共享同一块存储区域,因此整个共用体的大小取决于最大成员的尺寸。 这意味着,在任何时刻,共用体中只有一个成员可以持有有效值[^2]。 #### 3. 外部变量声明的关键字 `extern` 的含义是什么? `extern` 关键字用来声明外部变量或函数,表示该变量或函数是在其他文件中定义的。通过这种方式,多个源文件能够共享同一个全局变量或调用相同的函数而不重复定义它们。例如: ```c // 文件A.c 中定义了一个全局变量 int globalVar; // 文件B.c 使用 extern 声明这个变量以便使用它 extern int globalVar; ``` 需要注意的是,`extern` 并不会分配新的存储空间给所声明的对象——它只是提供了一种引用已存在对象的方法[^3]。 #### 4. 如何实现一个简单的快速排序算法? 下面展示了一个基于分治法思想的经典快速排序实现方法: ```python def quick_sort(arr): if len(arr) <= 1: return arr else: pivot = arr[len(arr) // 2] left = [x for x in arr if x < pivot] middle = [x for x in arr if x == pivot] right = [x for x in arr if x > pivot] return quick_sort(left) + middle + quick_sort(right) ``` 尽管这是 Python 实现版本,但同样的逻辑也可以很容易地翻译成 C 代码形式[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值