C语言—每日选择题—Day51

指针相关博客

打响指针的第一枪:指针家族-CSDN博客

深入理解:指针变量的解引用 与 加法运算-CSDN博客

第一题

1. 对于函数void f(int x);,下面调用正确的是()

A:int y = f(9);

B:f(9);

C:f( f(9) );

D:x=f();

答案及解析 B

函数调用要看返回值和传参是否正确;

A:错误,该函数没有返回值;

B:正确;

C:错误,f(9) 没有返回值,所以不能作为f函数的参数;

D:错误,f函数既不能赋值给变量,并且需要传参;

第二题

2.假设编译器规定int 和 short 类型长度分别为 32 位和 16 位,得到y 的机器数为( )。

unsigned short x = 65530;
unsigned int y = x; 

A:0x0000 7FFA

B:0x0000 FFFA

C:0xFFFF 7FFA

D:0xFFFF FFFA

答案及解析

本题考查的是隐式类型转换,这两个变量x,y都是无符号类型,但是x是short类型,给y赋值的时候,会拷贝一个临时变量,将这个临时变量隐式类型转换到y的类型,再赋值给y,因为是低位到高位,转换的时候是整型提升,都是无符号数,高位补0,结果不变;

图解:

第三题

3. 如果x=254,函数返回值为:

int func(int x) 
{ 
    int countx = 0; 
    while(x) 
    {
        countx ++;
        x = x & (x - 1);
    }
    return countx;
} 

A:6

B:7

C:8

D:0

答案及解析 B

本题考查的是位运算:常见位运算的公式大全(建议收藏,以防走丢)-CSDN博客

x & (x - 1)是消去二进制数最右边的1,所以countx计算的是一共有多少个1;

x = 254

二进制: 0000 1111 1110 一共有7个1,所以结果为7

第四题

4. 下列程序,若输入字符串abc,则函数f的功能是将字符串abc转换为*abc输出,请为横线处选择合适的程序( )

void f(char str[5]) 
{
    int i = strlen(str) - 1;
    while (i >= 0) 
    {
        str[i + 1] = str[i];
        i--;
    }
    _________________;
    printf("%s\n", str);
}

A:str[ i + 1 ] = ' * '

B:str[ i ] = ' * '

C:str[ 1 ] = ' * '

D:str[ i - 1 ] = ' * '

答案及解析 A

要实现功能abc 变成 *abc,也就是要挪动数据,一个一个覆盖,循环的功能就是将字符串往后整体移动,然后横线上就是把第一个位置的元素变成 * 

第一种:str[ 0 ] = ' * ';

第二种,可以借助 i ,此时 i 已经为 -1,所以也可以这样:str [ i + 1 ] = ' * '

第五题

5.若有定义:int a[4][10],则下列选项中对数组元素a[ i ] [ j]引用错误的是()

A:*(a + i) + j

B:*(&a[ 0 ][ 0 ] + 10 * i + j)

C:*(a[ i ] + j)

D:*(*(a + i) + j)

答案及解析 A

对数组元素的引用,这里为了方便图解,设置 i 值为1,j 值为2;

A:a是二维数组名,是数组首元素的地址,而二维数组的首元素是整个的一维数组,所以

二维数组的数组名是一维数组的地址,相当于a = &a[0],a + i 就相当于 &a[0] + 1 = &a[1]就是往后移动1个数组的地址,解引用*(a + 1)  = *&a[1] = a[1],所以解引用之后是拿到一维数组元素的地址,a[1] + 2  = a[3] ,是数组第四个元素的地址,并不是数组元素;

B:正确,先拿到数组元素的地址,之后进行指针+整数,再解引用一定是数组元素;

C:二维数组的行代表的是该行首元素的地址,外层一次解引用,得到的就是数组元素;

D:这里是两次解引用,*(*(a + i) + j) = *(a[ i ] + j) = a[ i ][ j ];

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/258084.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode—96.不同的二叉搜索树【中等】

2023每日刷题&#xff08;六十四&#xff09; Leetcode—96.不同的二叉搜索树 算法思想 实现代码 class Solution { public:int numTrees(int n) {vector<int> G(n 1, 0);G[0] 1;G[1] 1;for(int i 2; i < n; i) {for(int j 1; j < i; j) {G[i] G[j - 1] * …

Ubuntu18.04 上通过 jihu 镜像完成 ESP-IDF 编译环境搭建流程

为了解决国内开发者从 github 克隆 esp 相关仓库慢的问题&#xff0c;已将 esp-idf 和部分重要仓库及其关联的子模块镜像到了 jihu&#xff0c;这些仓库将自动从原始仓库进行同步。此篇博客用来阐述 Ubuntu18.04 上通过 jihu 镜像完成 ESP-IDF 编译环境搭建流程。 注&#xff1…

AOP与日志(下)

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 日志分类 有时候我们所…

ffmpeg windows开发之一(编译安装及入门指南)

一. 源码包下载 下载地址&#xff1a; Download FFmpegDownload FFmpeg 点击more lease&#xff0c;然后下载 二&#xff1a; MSYS2安装 &#xff1a; 下载地址&#xff1a;MSYS2 执行命令&#xff1a;pacman -Syu pacman -S mingw-w64-x86_64-gcc pacman -S mingw-w64-x86_64…

【Spring】14 ApplicationEventPublisherAware 接口

文章目录 1. 简介2. 作用3. 使用3.1 创建并实现接口3.2 配置 Bean 信息3.3 创建启动类3.4 启动3.5 工作流程图 4. 应用场景总结 Spring 框架为开发者提供了丰富的扩展点&#xff0c;其中之一是 Bean 生命周期中的回调接口。本文将专注介绍一个与事件发布相关的接口 Applicatio…

Windows 系统下本地单机搭建 Redis(一主二从三哨兵)

目录 一、Redis环境准备&#xff1a; 1、下载redis 2、Windows下的.msi安装和.zip格式区别&#xff1a; 二、哨兵介绍&#xff1a; 1、一主二从三哨兵理论图&#xff1a; 2.哨兵的主要功能&#xff1a; 3.哨兵用于实现 redis 集群的高可用&#xff0c;本身也是分布式的&…

LeetCode 1901. 寻找峰值 II

一、题目 1、题目描述 一个 2D 网格中的 峰值 是指那些 严格大于 其相邻格子(上、下、左、右)的元素。 给你一个 从 0 开始编号 的 m x n 矩阵 mat &#xff0c;其中任意两个相邻格子的值都 不相同 。找出 任意一个 峰值 mat[i][j] 并 返回其位置 [i,j] 。 你可以假设整个矩阵…

服务端主动给客户端发消息?实战教学:使用Nestjs实现服务端推送SSE

前言 服务端消息推送SSE是常用的服务器消息通信手段&#xff0c;适用于服务器主动给客户端发送消息的场景&#xff0c;例如私信通知&#xff0c;扫描登录等都可以使用SSE实现。SSE的底层原理是客户端与服务端建立 HTTP 长链接。 Nestjs 框架内置了对SSE的支持&#xff0c;本文…

前端性能监控和错误监控

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

FreeRTOS信号量学习

目录 一、信号量的特性 1. 信号量的常规操作 2. 信号量跟队列的对比 3. 两种信号量的对比 4. 信号量函数 4.1 创建 4.2 删除 4.3 give/take 5. 使用二进制信号量来同步 队列(queue)可以用于传输数据&#xff1a;在任务之间、任务和中断之间。 有时候我们只需要传递状态&…

外媒发稿最好的宣传方法是什么?大舍传媒

外媒发稿最好的宣传方法是什么&#xff1f; 引言 在如今信息爆炸的时代&#xff0c;外媒发稿的宣传方法至关重要。大舍传媒作为一家业内知名的传媒公司&#xff0c;积累了丰富的经验和成功案例。本文将探讨外媒发稿最好的宣传方法&#xff0c;旨在帮助读者更好地推广自己的信…

Java基础知识回顾

Java基础 一、Java概述 1、Java技术体系平台 类型简介JavaSE 标准版支持面向桌面级的应用JavaEE 企业版支持为企业开发的应用JavaME 小型版运行在移动终端的平台 2、Java重要的特点 面向对象的语言&#xff08;OOP&#xff09; 健壮的语言&#xff0c;具有强类型转换、异常…

MCU为什么上电不启动?

都遇到过这样的问题吧&#xff0c;自信满满的把程序下载到板子上&#xff0c;结果发现MCU居然没启动。 出现这个问题有很多原因&#xff0c;总结为以下五点&#xff1a; 第一&#xff0c;boot引脚电平不对&#xff0c;例如在GD32的MCU上&#xff0c;boot引脚决定了MCU的启动方式…

【pycharm】Pycharm常用快捷键

批量替换是指一次性替换多个文件中的指定内容。在开发过程中&#xff0c;可能会遇到需要替换多个文件中的某个字符串或者某段代码的情况。如果一个一个文件进行替换&#xff0c;那么将会非常耗时和繁琐。 而使用批量替换功能&#xff0c;则可以一次性完成所有文件的替换操作&am…

MyBatis——自定义MyBatis(了解)

1.自定义MyBatis-了解 创建工程&#xff0c;拷贝上一个工程代码&#xff0c;去掉mybatis的依赖&#xff1a; 1.1.MyBatis的核心对象 我们已经通过案例体验到了mybatis的魅力。现在来梳理一下MyBatis运行时的几个对象&#xff0c;我们需要搞清楚他们的作用&#xff0c;进而需要…

java参数校验

引入依赖 <!--参数效验--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency><!--Length参数效验--><dependency><groupId>org.hib…

pycharm手动安装ini插件

pycharm中新增pytest.ini文件时发现&#xff0c;文件的图标不是配置文件的图标 原因是没有安装ini插件 安装插件的方式有很多种&#xff0c;今天通过去官网下载插件&#xff0c;再安装的方式 第一步&#xff1a;去官网搜索&#xff0c;地址是&#xff1a;https://plugins.jet…

【Java 集合】LinkedBlockingQueue

LinkedBlockingQueue, 顾名思义: 基于链表的阻塞队列, 位于 JUC (java.util.concurrent) 下, 是一个线程安全的集合, 其本身具备了 不支持 null 元素: 存入 null 元素会抛出异常固定不限容量: 在不手动设置容量时, 最大可以支持 Integer.MAX_VALUE 个元素, 也就是理论上的无限个…

MapReduce 基础实战

文章目录 第1关&#xff1a;成绩统计第2关&#xff1a;文件内容合并去重 第1关&#xff1a;成绩统计 编程要求 使用MapReduce计算班级每个学生的最好成绩&#xff0c;输入文件路径为/user/test/input&#xff0c;请将计算后的结果输出到/user/test/output/目录下。 测试说明 …
最新文章