C语言--每日五道选择题--Day4

第一题

1、如果 x=2014 ,下面函数的返回值是( )

cpp 复制代码
int fun(unsigned int x)
{
    int n = 0;
    while(x + 1)
    {
        n++;
        x = x | (x + 1);
    }
    return n;
}

A: 20

B: 21

C: 23

D: 25

答案及解析 C

这个函数的作用是对整型中0的个数进行统计

**x = x | (x+1)**的作用是每次循环把x的二进制中从右往左数的最后一位0变成1,直道变成全1的时候x+1就溢出为全0,循环结束。

2014的二进制是0000 0000 000 0000 0000 0111 1101 1110,一共有9个1,所以就有23个0,需要循环23次,才能溢出,n就等于23,所以结果是23

第二题

2、下列语句定义 x 为指向 int 类型变量 a 的指针,其中哪一个是正确的( )
A: int a , *x = a;

B: int a , *x = &a;

C: int *x = &a , a;

D: int a , x = a;

答案及解析 B

A选项的x是指针,赋值时使用a不合适

C选项在赋值时a变量还没定义

D选项中的x不是指针

第三题

3、下面有关空指针和未初始化指针,说法错误的是( )
A: 对0x0这个地址取值是非法的

B: 空指针可以确保不指向任何对象或函数; 而未初始化指针则可能指向任何地方

C: 空指针与任何对象或函数的指针值都不相等

D: malloc在其内存分配失败时返回的是一个未初始化的指针

答案及解析 D

malloc函数在内存分配失败时返回NULL,其余选项都正确

第四题 (做错了)

4、若有定义 int a8; ,则以下表达式中不能代表数组元素 a1 的地址的是( )
A: &a0+1

B: &a1

C: &a0++

D: a+1

答案及解析 C

C:a0先和++结合,形成一个表达式,不能对表达式取地址,会报错

D:a计算时是首元素地址,再加1,就是a1的地址。因为a是指向int类型的,a+1会向后移4个字节,所以指向a1的位置。

第五题

5、以下选项中,对基本类型相同的两个指针变量不能进行运算的运算符是( )
A: +

B: -

C: =

D: ==

答案及解析 A

A错误,因为两个地址相加无意义也可能越界,所以规定不允许指针相加。

B选项,可以求出两个数据元素储存位置之间的相隔同数据类型的元素个数

C选项,赋值,没问题

D选项,判断两指针是否相同

相关推荐
小O的算法实验室4 小时前
2025年KBS,基于强化学习离散状态转移算法+复杂约束下多无人机任务分配
算法
下班走回家4 小时前
RAG 技术的进化:从朴素检索到 Agentic RAG
开发语言·人工智能·python
weixin_307779134 小时前
从“大海捞针”到“主动推理”:AI如何重塑云原生故障诊断的根因链
开发语言·人工智能·算法·自动化·原型模式
Johnstons4 小时前
网页加载到一半卡住?视频看到关键处花屏?可能是丢包在作祟
开发语言·php·音视频·弱网测试·网络损伤
hoiii1874 小时前
C# Txt/Excel/Access 导入导出工具
开发语言·c#·excel
京东云开发者4 小时前
一键调用!京东云率先上线MiniMax M3
算法
代码中介商4 小时前
C++ 智能指针完全指南(二):shared_ptr 深度详解
开发语言·c++
@Ma4 小时前
Python 实现企业微信外部群主动消息发送及成功接入后如何避坑,避免风控封号
开发语言·python·企业微信
papership4 小时前
入门级-数据结构-2、简单树:二叉树的遍历(前序、中序、后序)
数据结构·算法
WWW65264 小时前
代码随想录 打卡第五十四天
数据结构·c++·算法