牛客网专项练习——C语言错题集(9)

文章讨论了C语言中的基本概念,包括字符常量与逻辑假的关系,不同变量类型的内存占用,fork()函数的执行情况,可能导致缓冲区溢出的字符串操作函数及其安全版本,函数原型的定义,指针变量的关系运算,以及内存区域如BSS段的作用。此外,还涉及了二维数组初始化的规则和常见误区。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字符常量

‘a’ 是一个字符常量,占用 1 个字节空间。

在这里插入图片描述

‘\0’ 与 逻辑假的关系

‘\0’ 是一个字符,它的值和整数 0 相等,只是占用空间大小不同。

在这里插入图片描述

不同类型变量所占空间大小

两点需要注意:

  1. 32位机器 unsigned long 所占用空间是 4 字节
  2. 选项中的数据是 16 进制的,10 进制的 20 对应的 16 进制为 14。

在这里插入图片描述

运行多个 fork

最好不要心算,用草稿推理比较稳妥。

第一次运行 fork(),父进程和子进程各运行一次 printf(),打印了两次 “hello",第二次运行 fork(),之前的两个进程各再打印两次 ”hello",一共打印了 2 + 4 = 6 次。

在这里插入图片描述

容易造成缓冲区溢出的字符串操作函数

strcpy,strcat,sprintf 容易造成缓冲区溢出,它们的优化版本则更安全(strncpy,strncat,snprintf),优化版本可以限制操作的字节数,从而避免缓冲区溢出。

在这里插入图片描述

函数原型格式

A 错在参数中间使用了 ; 。。。
D 选项是对的 —— 函数原型:指明函数的名字,返回的类型,有几个参数,这几个参数是什么类型,不需要函数体,也不需要形式参数的名字,其中用分号作为原型的结束符。

在这里插入图片描述

指针变量的关系运算,空指针访问存储单元

A:不同类型指针无法直接指向
B:空指针不能访问存储单元
C:p = 0 等价于 p = NULL 和 p = ‘\0’
D:指针变量指向的是地址,地址可以用关系运算符比较

在这里插入图片描述

BSS 段

bss:未初始化全局变量
data: 已初始化全局变量
text: 代码段
heap: 堆
stack: 栈

在这里插入图片描述

下面是题目讨论里某网友的评论:

在这里插入图片描述

二维数组初始化

个人感觉 B 和 D 都没问题
多维数组只能省略第一维的大小,所以 A 错误。
C 选项第一维溢出了

题目的评论里有很多人说 D 选项没问题。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小辉_Super

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

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

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

打赏作者

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

抵扣说明:

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

余额充值