C语言面试经典提问

摘要
此次文为面试时被面试官提问到的常见C语言知识
<1>问 : 结构体和联合体的区别有什么?
答:结构体内存大小为结构内各变量大小之和,同时还与变量排列顺序有关因为涉及到内存管理,联合体内存大小等于联合体内所占内存最大的变量,联合体经典用法为合并数据例如将四个char 类型变量合并为一个int类型数据。
<2>问: 链表和数组的的常见用处及其区别 ?
答:链表与数组都可以原来存放数据节点,不同之处如下
链表: 其优点在于可以根据需要动态申请内存后存放数据,使得内存物尽其用,其其缺点在于操作复杂,内存必须及时释放,否则会造成内存泄漏。
数组: 其优点在于操作简单方便,缺点在于必须事先定义数组大小,事后无法更改,会造成内存的浪费或者不足。
<3>问: 在C语言中单#号与双#的作用及其用法?
答:单#号时做宏定义=》将宏参数进行字符串操作,等同于在宏参数在编译时就地展开为字符串。
双#号时作连接使用=》将前后字母连接为一体。
例子:#define show(NAME) printf("linux"#NAME"=%d\n,P##NAME)
定义变量: int P25=8421;
调用时 : show(25);
编译时宏展开为: printf("linux"#25"=%d\r\n",P##25);
其中#25=="25" P##25====P25
printf("linux""25""=%d\n",P25);
printf("linux25=%d\n",P25); ===> linux25=8421;
<4>问: 宏定义传参与函数传参各有什么特点?
答: 函数传参时cpu会有相关的栈操作,cpu开销较大,适合于运算量较大的参数传参,而宏定义则简单高效没有栈操作,适合于运算量较小的传参。
<5>问: sizeof是不是函数,其如何数组计算大小
答:sizeof不是函数时,它是一个操作符,
通过sizeof传入数组名得到整个数组所占内存大小,之后通过sizeof传入单个数组变量得到单个数组变量大小两者相除便可到数组大小
例子int array[10]; int strlen;
strlen=sizeof(array)/sizeof(array[0]);由此得到数组大小。

注:问题解答为博主自身见解,存在不足之处,甚至存在错误,仅供参考!!!!!。

  • 5
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值