华为od 面试八股文_C语言_02_含答案

目录

1:static的用法(定义和用途)

2:struct、union的异同

3:malloc的底层实现

4:new/delete和malloc/free的区别

5:volatile关键字

(a)关于编译器优化

(b)volatile的引入

(c)哪些情况下使用volatile

6:typedef和define有什么区别?

(a)原理不同

(b)功能不同

(c)作用域不同

7:栈在C语言中有什么作用?

8:strcat、strncat、strcmp、strcpy哪些函数会导致内存溢出?如何改进?

9:大小端存储


1:static的用法(定义和用途)

static修饰局部变量:使其变为静态存储方式(静态数据区),函数执行完成之后不会被释放,而是继续保存在内存中;

static修饰全局变量:使其只在本文件内部有效,其他文件不可链接或引用该变量;

static修饰函数:静态函数,即函数只在本文件内部有效,对其他文件不可见;避免同名干扰,同时保护

2:struct、union的异同

  • struct中每个变量依次存储;union中,每个变量都是从偏移地址零开始存储,同一时刻只有一个成员存储于该地址

  • struct内存大小遵循结构对齐原则

    • 数据成员对齐规则:每个数据成员存储的起始位置要从该成员大小的整数倍开始

    • 数据成员包含结构体:结构体成员要从其内部最大元素对象的整数倍地址开始存储

    • 结构体总大小:其内部最大基本成员的整数倍,不足则要补齐

  • union内存大小为其最大成员的整数倍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MISAYAONE

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值