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

C语言--每日选择题--Day27

第一题

1. 对于代码段,问下面不可以表示a[1]地址的是()

int a[10];

A:&a[0] + 1

B:a + sizeof(int)

C:(int*)&a + 1

D:(int*)((char*)&a + sizeof(int))

答案及解析 A

A:取到的是a[0]的地址,我们对地址的加整数,加的是这个指针指向的内容类型的字节数;

比如&a[0]+1,a[0]为int类型,那&a[0]+1,就是往后走4个字节,也就是达到下一个元素的位置;如果是(char*)&a[0] + 1;就是往后走一个字节,这样说有点抽象,用图表示为:

我们要把数字换成二进制表示出来才更直观:

比如我们设定一个数组int arr[2];

B:a代表的是首元素地址,sizeof(int)为4个字节,也就是要让a从首元素的地址往后移动4*4个字节,就到a[16]的地址,明显的越界;

C:&a是取到整个数组的地址,类型为int (*)[],但是表示出来依旧首元素地址,强转为int*类型,+1,就是往后走4个字节,到arr[1]的地址;

D:(char*)&a,把a强转为char*类型,sizeof(int)为4,往后移动4字节位置,到达的是arr[1]的地址,想要取到整个整型的地址,要再强转回int*;

第二题

2. 下列for语句的循环次数是()

int sum = 0;
for (int i=1;i<=5;sum++)sum+=i;

A:无限

B:0

C:1

D:有语法错误,不能执行

答案及解析 A

因为for循环里是sum的增加,并不是i,而判断语句中是i <= 5;所以i无变化,一直满足这个循环条件,是死循环,所以选A

第三题

3. 设有语句  char a = '\72';,则关于变量a的说法正确的是()

A:包含2个字符

B:说明不合法

C:包含1个字符

D:包含3个字符

答案及解析 C

\ddd(可以是1~3个d)表示的是一个字符,为八进制数字;

第四题

4. 已有定义:char a[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是 ()

(长度使用sizeof比较)

A:数组a和b的长度相同

B:a数组长度小于b数组长度

C:a数组长度大于b数组长度

D:上述说法都不对

答案及解析 C

a这个字符串,有隐藏的\0,所以计算的是4个字符的大小,sizeof(a) = 4;

而sizeof(b) = 3;

若想查看sizeof和strlen的区别,点击此博客:全网最详细的sizeof运算和strlen函数讲解(通过多种数据类型举例)_如何用sizeof算出数据字节数_小程序面包园的博客-CSDN博客

第五题

5. 若有以下说明和定义语句:考虑内存对齐,则变量aa所占内存的字节数是(        )

union uti 
{int n;double g;char ch[9];
};
struct srt 
{float xy;union uti uv;
} aa;

A:9

B:8

C:24

D:13

答案及解析 C

union的最大对齐数为8,然而联合体的大小至少为最大成员的大小,所以为9个字节,但是大小都要是最大对齐数的整数倍,所以联合体最后的字节数为16,最大对齐数为8;

在结构体中嵌套联合体,结构体等,这样的自定义类型的对齐数就是自己内部的最大对齐数,所以为8,但是要占自身字节的大小;之后最后的字节数必须是最大对齐数的整数倍;

相关博客:C/C++内存对齐规则(结构体、联合体、类)-CSDN博客

相关文章:

  • 15 网关实战: 微服务集成Swagger实现在线文档
  • 全新爱蜗影视优码双端影视源码v9.1/影视视频APP源码+支持代理/在线支付+支持对应苹果CMS
  • ubuntu22.04配置shadowsocks
  • 深入redis过程-命令
  • Golang并发模型:Goroutine 与 Channel 初探
  • 接口01-Java
  • Matlab R2022b 安装成功小记
  • 力扣101. 对称二叉树
  • Java中的spring——面试题+答案(Spring Boot)——第20期
  • LeetCode(32)串联所有单词的子串【滑动窗口】【困难】(含图解)
  • 【MATLAB源码-第89期】基于matlab的灰狼优化算法(GWO)无人机三维路径规划,输出做短路径图和适应度曲线
  • 域名和ip的关系
  • Ajax 是什么? 如何创建一个 Ajax?
  • Docker 命令详解
  • 小程序如何禁止指定用户访问?如何设置指定用户才能访问?
  • Google 是如何开发 Web 框架的
  • dva中组件的懒加载
  • JAVA并发编程--1.基础概念
  • Java到底能干嘛?
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 前端技术周刊 2019-02-11 Serverless
  • 前嗅ForeSpider中数据浏览界面介绍
  • 删除表内多余的重复数据
  • 什么软件可以剪辑音乐?
  • 微信支付JSAPI,实测!终极方案
  • 我看到的前端
  • 06-01 点餐小程序前台界面搭建
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #NOIP 2014# day.2 T2 寻找道路
  • #pragam once 和 #ifndef 预编译头
  • #图像处理
  • $(selector).each()和$.each()的区别
  • $refs 、$nextTic、动态组件、name的使用
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (附源码)ssm码农论坛 毕业设计 231126
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (转载)利用webkit抓取动态网页和链接
  • *Django中的Ajax 纯js的书写样式1
  • . Flume面试题
  • .gitignore
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .Net FrameWork总结
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .Net的C#语言取月份数值对应的MonthName值
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .NET文档生成工具ADB使用图文教程
  • .Net转前端开发-启航篇,如何定制博客园主题
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...