C语言—每日选择题—Day59

指针相关博客

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

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

第一题

1. 以下关于 typedef 正确的描述是()【多选】

A:用typedef可以定义各种类型别名,但不能定义变量

B:用typedef只是将已存在的类型用一个新的名称代替

C:用typedef可以增加新类型

D:使用typedef便于程序的通用

答案及解析 ABD

typedef只是给已经存在的类型起别名,可以将复杂的类型简单化;并不是新增类型;

第二题

2. 对于以下递归函数f,调用f(4),其返回值为()

int f(int n) 
{   
    if(n)    
        return f(n - 1) + n;
    else 
        return n;
}

A:10

B:4

C:0

D:以上均不是

答案及解析  

本题考查的是递归,遇到递归计算,按步展开:

f(4)  = f(3) + 4

        = f(2) + 3 + 4

        = f(1) + 2 + 3 + 4

        = f(0) + 1 + 2 + 3 + 4

        = 0 + 1 + 2 + 3 + 4

        = 10

第三题

3. 下面程序的输出为()

#include <stdio.h>
int main() 
{
    char *ptr;   
    char arr[] = "12345678";
    ptr = arr;
    ptr += 5;
    printf("%s", ptr);
    return 0;
}

A:5678

B:678

C:编译错误

D:其它选项都不对

答案及解析 B

        ptr指针最开始指向数组arr的首元素地址,ptr += 5,是对指针的加法运算,需要根据自身数据类型char*,所以往后移动的是5个字节,就到6的地址,对ptr打印直接输出678,因为printf函数会去寻找字符串的\0,遇到\0结束打印。

第四题

4. int类型的二维数组X按行顺序存储

 X[4][4] 的存储地址为 0xf8b82140 

 X[9][9] 的存储地址为 Oxf8b8221c

 则X[7][7]的存储地址为 ( )

A:0xf8b821c4

B:0xf8b821a6

C:0xf8b82198

D:0xf8b821c0

答案及解析 A

        首先我们是不知道这个二维数组一行有几个元素的,所以必须要求出来一行有多少元素:而我们只知道地址,两个地址之间的差就是这两个地址之间的元素个数,这里是前闭后开的关系,也就是计算两个元素的地址差,求出来的元素个数是小地址到大地址之间的元素个数,包括小地址,不包括大地址;

假设每行有n个元素:

&X[9][9] - &X[4][4] = (21c-140) / 4       //除4是因为是int类型

&X[9][9] - &X[4][4] = 4n + (n - 4) + 9  = 5n + 7

4n :5、6、7、8行的元素个数

n - 4 :表示第5行中,第五个元素之后还有多少个元素,包括第五个元素

9 : 在第十行中,第十个元素之前的元素个数,不包括第十个元素

5n + 5 = (21c -140) / 4

5n + 5 = (540 - 320) / 4

5n + 5 = 220 / 4

5n + 5 = 55

n = 10

所以最后每行一共有10个元素;

那x[7][7]的地址 = &X[4][4] + (2n + 7 + (n - 4))*4  = 140 + 84 = 1c4

第五题

5. 以下代码在64位的机子上输出是()

#include <stdio.h>
int getSize(int data[])
{
    return sizeof(data);
}
 
int main()
{
    int data1[] = {1,2,3,4,5};
    int size1 = sizeof(data1);
     
    int* data2 = data1;
    int size2 = sizeof(data2);
     
    int size3 = getSize(data1);
     
    printf("%d, %d, %d", size1, size2, size3);
    return 0;
}

A:20, 8, 8

B:4, 4, 4

C:20, 4, 20

D:20, 20, 20

答案及解析 A

这个题就是根据昨天的题来的哦,别忘了数组传参会降为指针类型;

data1 :sizeof数组名,求的就是整个数组的大小,为20;

data2 :data2是一个int*类型,64位机器,是8字节大小;

第三个就是涉及数组传参,降为指针类型,是int*,也是8字节

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

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

相关文章

收藏!可能是最完整的全球AI大模型名单

ChatGPT的出现在全球掀起了AI大模型的浪潮。 区块链是生产关系的重构&#xff0c;元宇宙是虚拟场景的重构&#xff0c;而互联网则解决了信息流通和生产效率的问题&#xff0c;但这些都是在生产关系范畴内&#xff0c;而ChatGPT的出现则大幅度提升了生产力&#xff0c;让人类可…

openGauss学习笔记-168 openGauss 数据库运维-备份与恢复-导入数据-使用gs_restore命令导入数据

文章目录 openGauss学习笔记-168 openGauss 数据库运维-备份与恢复-导入数据-使用gs_restore命令导入数据168.1 操作场景168.2 操作步骤168.3 示例 openGauss学习笔记-168 openGauss 数据库运维-备份与恢复-导入数据-使用gs_restore命令导入数据 168.1 操作场景 gs_restore是…

Windows中安装nvm进行Node版本控制

1.nvm介绍 nvm英文全程也叫node.js version management&#xff0c;是一个node.js的版本管理工具。nvm和npm都是node.js版本管理工具&#xff0c;但是为了解决node各种不同之间版本存在不兼容的问题&#xff0c;因此可以通过nvm安装和切换不同版本的node。 2.nvm下载 可在点…

Linux基础(第三部分)

目录 一、查看文件显示命令 1、cat&#xff1a;查看文件内容&#xff1b;上下合并文件 2、标准输入与标准输出&#xff1a; 3、例题&#xff1a;如何合并两个文件 4、tac 就是反方向查看 5、rev 把一行倒过来 6、hexdump 查看硬件设备 7、more和less 8、查看文件内容…

ICC2:Less than minimum edge length和Concave convex edge enclosure

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 首先,要介绍一下这两种drc Less than minimum edge length对应的tf rule如下: 而Concave convex edge enclosure对应图示和tf 规则如下,可

【UML】第7篇 用例图(2/3)

目录 一、什么是用例&#xff08;Use Case&#xff09; 二、用例的识别 2.1 识别用例的思考方法 2.2 识别用例的注意事项 三、用例的命名 四、用例规约 五、用例的粒度处理 错误1&#xff1a;粒度过细 错误2&#xff1a;把步骤当用例 错误3&#xff1a;把活动当用例 …

关于RAP和ZIP之间的区别、关系和转换,看这篇就差不多了

RAR和ZIP文件都是流行的文件格式&#xff0c;允许你以压缩的方式存储文件。因此&#xff0c;文件占用的空间较小&#xff0c;并且可以在需要时快速传输。 当你有一些RAR文件已经被压缩时&#xff0c;由于各种原因&#xff0c;你可能仍然想将它们转换为ZIP文件。阅读本文了解如…

Axure RP 8 for Mac/win中文版:打造完美交互式原型设计体验

Axure RP 8&#xff0c;一款引领潮流的交互式原型设计工具&#xff0c;为设计师提供了无限的可能性&#xff0c;让他们能够创造出逼真的原型&#xff0c;从而更好地展示和测试他们的设计。 Axure RP 8拥有丰富的功能和工具&#xff0c;让设计师可以轻松地创建出复杂的交互式原…

hadoop集群的开启与关闭

背景 很久没完hadoopl,连怎么开启关闭都不会了qwq 1.进入安装hadoop的目录 我这里是已经进入了 2.开启集群 sbin/start-dfs.sh 3.关闭集群 sbin/stop-dfs.sh

尚硅谷 java 2023(基础语法)笔记

一、变量与运算符 1、HelloWorld的编写和执行 class HelloChina{public static void main(String[] args){System.out.println("hello,world!!你好&#xff0c;中国&#xff01;");} } 总结&#xff1a; 1. Java程序编写和执行的过程&#xff1a; 步骤1&#xff1…

【java】java学习笔记

1. 快速入门 // Hello类 public class Hello {// main方法public static void main(String[] args) {System.out.println("hello world!");} } 在控制台输入以下命令&#xff0c;对.java文件&#xff08;源文件&#xff09;进行编译操作&#xff0c;生成Hello.clas…

提前预判和确认再做 现货白银投资的两种思路

在现货白银投资中&#xff0c;对于交易的步骤长期有两种看法。一种是提前预判行情并提前布局。另外一种是等待行情启动再做布局。这种两种方法要怎么选呢&#xff1f;笔者将从自己的角度出发&#xff0c;对这个问题进行讨论。 我们来看一下前一种的投资者&#xff0c;他们喜欢提…

个人或企业为啥要搭建及自己的知识付费平台才有前景?

在知识经济的时代&#xff0c;知识的传播和变现显得愈发重要。许多个人或企业选择将自己的知识、技能和经验通过课程的形式进行传播&#xff0c;以实现知识的价值。然而&#xff0c;在使用其他平台进行课程销售的过程中&#xff0c;他们常常面临着一些问题和挑战。 首先&#…

基于FPGA的简易BPSK和QPSK

1、框图 2、顶层 3、m_generator M序列的生成&#xff0c;输出速率为500Kbps 4、S2P是串并转换模块 将1bit的m序列转换到50M时钟下的2bit M序列数据&#xff08;就有4个象限&#xff09;&#xff1b; 5、my_pll是生成256M的时钟作为载波&#xff0c;因为sin和cos信号的…

linux 性能优化-内存优化

CPU 管理一样&#xff0c;内存管理也是操作系统最核心的功能之一。内存主要用来存储系统和应 用程序的指令、数据、缓存等。 1.内存原理 1.1.内存映射 1.1.1.日常生活常说的内存是什么? 我的笔记本电脑内存就是 8GB 的这个内存其实是物理内存物理内存也称为主存&#xff0…

【分享】Word技巧之锁定部分区域

在编辑Word文档过程中&#xff0c;如果部分内容已经确定好&#xff0c;但又担心不小心做了改动&#xff0c;我们可以将这部分内容锁定起来&#xff0c;使之无法编辑更改&#xff0c;不清楚的小伙伴一起来看看如何设置吧。 首先&#xff0c;打开Word文档后&#xff0c;用鼠标选…

Opencv 入门三(视频滑动条窗口)

视频滑动条窗口源码如下&#xff1a; #include "opencv2\highgui\highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #include <iostream> #include <fstream> using namespace std; int g_slider_position 0; // 滑动条的位置 …

Vue3-24-组件-异步组件的介绍

什么是异步组件 个人理解 &#xff1a;异步组件 就是在用到这个组件的时候再进行加载&#xff0c;而不是 一上来就全部加载完成。即用即取的一个思想。异步组件中使用到的方法 &#xff1a; defineAsyncComponent () 方法 &#xff1a; 返回一个Promise 对象; 我们在开发过程中…

Java 线程管理中的锁

Monitor 概念 Java 对象头 Mark Word: Monitor (锁) Monitor 被翻译为监视器或管程 每个 Java 对象都可以关联一个 Monitor 对象&#xff0c;如果使用 synchronized 给对象上锁&#xff08;重量级&#xff09;之后&#xff0c;该对象头的Mark Word 中就被设置指向 Monitor 对…

uniapp整合echarts(目前性能最优、渲染最快方案)

本文echarts示例如上图,可扫码体验渲染速度及loading效果,下文附带本小程序uniapp相关代码 实现代码 <template><view class="source