西邮Linux兴趣小组面试题总结(2020)

这篇博客总结了C语言面试中常见的知识点,包括宏定义的使用,如代码中的宏替换及字符串化操作;位移操作的理解;内存中的大端和小端模式;以及`printf`和`scanf`函数的返回值。同时,介绍了静态变量在函数调用中的行为,`const`关键字的含义,以及结构体在内存中的对齐规则。此外,还讨论了数组和指针的关系,以及如何通过指针访问数组元素。
摘要由CSDN通过智能技术生成

面试题总结

宏定义

#define 标识符 字符串

  • 2019年面试题
下面代码段的输出结果是什么?输出该结果的原因是?
#define X a + b
int main(int argc, char *argv[])
{
   
	int a = 1, b = 1;
	printf("%d\n", X * X);
	return 0;
} 

代码相当于
int main(int argc, char *argv[])
{
   
 int a = 1, b = 1;
printf("%d\n", (a + b) * (a + b));
return 0;
} 

输出结果为: 4

在宏体中,如果宏参数前加个#,那么在宏体扩展的时候,宏参数会被扩展成字符串的形式。

  • 2018年面试题
分析以下代码段,解释输出的结果。
#define YEAR 2018
#define LEVELONE(x) "XiyouLinux "#x"\n" 
#define LEVELTWO(x) LEVELONE(x)
#define MULTIPLY(x,y) x*y
int main(int argc, char *argv[])
{
   
	int x = MULTIPLY(1 + 2, 3);
	printf("%d\n", x);
	printf(LEVELONE(YEAR));
	printf(LEVELTWO(YEAR));
}

代码相当于:
#define YEAR 2018
#define LEVELONE(x) "XiyouLinux "#x"\n" 
#define LEVELTWO(x) LEVELONE(
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值