当前位置: 首页 > news >正文

c语言易错题(选择)

这里给大家讲一下c语言部分遗留的选择题,用来巩固知识,一共13道题

1

答案解析

A:正确 不同的函数属于不同的作用域,因此不同的函数中定义相同名字的变量不会冲突

B:正确 在C语言中,函数的形参一般都是通过参数压栈的方式传递的

C:正确 在函数内定义的变量,称为局部变量,局部变量只能在其定义的函数中使用

D:错误 复合语句中定义的变量只能在复合语句中使用

因此:选择D

2

答案解析

A:正确,形参按照值的方式传递,将来形参就是实参的一份临时拷贝,修改形参不会影响外部的实参

B:正确,形参按照指针方式传递,将来形参就是实参地址的一份拷贝,形参指向的是实参,修改形参指针指向的内容,  就是在操作实参

C:错误,记住C语言中,函数不能嵌套定义

D:正确,函数可以嵌套调用,即:A()中调用B(),B()中调用A(),但是要控制好,否则就成为无限递归

因此,选择C

3

  C语言关键字:C语言定义的,具有特定含义、专门用于特殊用途的C语言标识符,也称为保留字

define不是关键字,是编译器实现的,用来定义宏的预处理指令,不是C语言中的内容。  int、struct和continue都是C语言中包含的关键字。

  

  因此:选择C

4.

答案是b,我带大家计算一下,只需要记住前置++,--先++或者--后使用,后置是先使用再++或者--

我们从a=5开始看,接着c=++a,前置++先++后使用,a先变成6赋值给c也是6

再下一行是一个逗号表达式,会将最后一个逗号之后的结果赋值给b,也就是说++c将c变成7,c++不变因为是后置(先使用后++),++a,a为7,a++不变,然后将7赋值给b,b为7,而c和a各有一个后置++会在赋值b之后使用,a和c变为8

最后一行就简单了,因为+的优先级高于+=,先算后边,也就是说a+c(这里看成a+c是因为后置++先使用后++),a+c是16赋值给b+=结果是7+16=23赋值后a会自增1也就是9

答案就是9 8 23了

5

这道题也很有价值,答案是a

全局变量i默认是0,i--之后i是-1,进入if比较的时候,记住sizeof返回值是无符号数,相当于是-1>4是否成立,如果你没有注意sizeof返回值是无符号数,那肯定选<

比较数字我们记住这几点就行

有符号数字的比较直接看大小,比如正数就是比负数大,5就是大于-1,-2就是大于-5

有符号和无符号数字的比较,会将有符号转化为无符号数,也就是看补码(全部都是数值位)直接得出二进制数字之和

无符号数的比较,会比较补码(二进制数字之和)比如-1的补码是全1,转化无符号数就是42亿,42亿肯定比4大,所以选a大于

6

选B,函数定义至少也得有参数,所以只能选B

CD前半句压根就不是定义而是声明,A选项参数列表的第二个参数错了。应为char *,B选项正确。需要说明的是,对于函数名来说,前面的&和*都会被忽略,所以fun前面加不加取地址都没区别。

7D

“调用指针”、“指向函数”是什么鬼……D选项简直逻辑鬼才!ABC就是基础概念,可以复习下。

回调函数是一种在编程中常见的概念,它是指将一个函数作为参数传递给另一个函数,并在特定的条件或事件发生时被调用执行的函数。

具体来说,回调函数是作为参数传递给其他函数的函数指针或函数对象。当满足特定条件或事件发生时,调用该函数指针或函数对象,以执行预定义的操作或逻辑。

8

union只有2字节,2字节的十六进制只有4位,所以答案CD排除。

这里是小端存储,低位字节放低地址处,高位字节放高地址处,而数组是从低到高排布,所以39是低位字节,38是高位字节,也就是0x3839,以16进制打印就是去掉0x

9

结构体向int对齐,7个short一共是14字节,对齐后是16字节。n是单独的4字节,由于是union,所以n与s共用空间,只取最长的元素,故占用16字节。

10

说明:结构体向最长的char对齐,前两个位段元素一共4+2位,不足8位,合起来占1字节,最后一个单独1字节,一共3字节。另外,#define执行的是查找替换, sizeof(struct _Record_Struct) * MAX_SIZE这个语句其实是3*2+3,结果为9,故选D。

11

#define执行查找替换,#if可以区分是否编译,#undef可以反定义,也就是取消#define宏定义的东西,#end并没有这玩意,只有#endif,故选D。

12

预处理的#define是查找替换(可以理解为*只跟第一个变量结合,第二个变量还是整形),所以替换过后的语句是“int*a,b;”,其中b只是一个int变量,如果要让b也是指针,必须写成“int *a, *b;”。而typedef没有这个问题,c、d都是指针。故选B。

13.

题干中提到了“编译”,说明是编译的上一步,那自然是预处理。故选A

相关文章:

  • VMware按照的MacOS升级后无法联网
  • A9. Jenkins Pipeline自动化构建,飞书通知
  • 【Github每日推荐】-- 2024 年项目汇总
  • 网工_IP地址
  • 云计算架构学习之Ansible-playbook实战、Ansible-流程控制、Ansible-字典循环-roles角色
  • 蓝桥杯单片机基础部分——6、555定时器
  • 【学术投稿-第四届材料工程与应用力学国际学术会议(ICMEAAE 2025】材料工程与应用力学的探讨
  • Java中的锁
  • 六、敏捷开发工具:项目管理工具
  • 常用Webpack Loader汇总介绍
  • 【C++】结构体排序+sort(),cmp()参数写法口诀
  • 【时时三省】(C语言基础)三种基本结构和改进的流程图
  • Day01 【苍穹外卖】环境搭建与前后端联调
  • 【Java】泛型与集合篇(二)
  • cesium视频投影
  • 【核心算法篇三】《DeepSeek强化学习:Atari游戏训练框架解析》
  • 使用 Docker 部署 Apache Spark 集群教程
  • IDEA——Mac版快捷键
  • 如何使用 MTG2000 和 FreeSWITCH 通过 SIP Trunk 搭建呼叫中心
  • Jetpack Compose系列教程之(16)——Compose生命周期及副作用函数
  • 上海发布预付卡消费“10点提示”:警惕“甩锅闭店”套路
  • 抗战回望21︱《“良民”日记》:一个“良民”在沦陷区的见闻与感受
  • 印方称若巴方决定升级局势,印方已做好反击准备
  • 茹诗瑶评《失去伊斯坦布尔》︱“帝国主义者”的多重面相
  • “五一”假期预计全社会跨区域人员流动量累计14.67亿人次
  • GOMU超马世锦赛,男女冠军刷新世界纪录