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

第一题

  1. 对于代码段,问下面不可以表示a1地址的是()
cpp 复制代码
int a[10];

A:&a0 + 1

B:a + sizeof(int)

C:(int*)&a + 1

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

答案及解析 A

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

比如&a0+1,a0为int类型,那&a0+1,就是往后走4个字节,也就是达到下一个元素的位置;如果是(char*)&a0 + 1;就是往后走一个字节,这样说有点抽象,用图表示为:
我们要把数字换成二进制表示出来才更直观:

比如我们设定一个数组int arr2;

B:a代表的是首元素地址,sizeof(int)为4个字节,也就是要让a从首元素的地址往后移动4*4个字节,就到a16的地址,明显的越界;
C:&a是取到整个数组的地址,类型为int (*)\[\],但是表示出来依旧首元素地址,强转为int*类型,+1,就是往后走4个字节,到arr1的地址;
D:(char*)&a,把a强转为char*类型,sizeof(int)为4,往后移动4字节位置,到达的是arr1的地址,想要取到整个整型的地址,要再强转回int*;

第二题

  1. 下列for语句的循环次数是()
cpp 复制代码
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

第三题

  1. 设有语句 char a = '\72';,则关于变量a的说法正确的是()
    A:包含2个字符

B:说明不合法

C:包含1个字符

D:包含3个字符

答案及解析 C

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

第四题

  1. 已有定义: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博客

第五题

  1. 若有以下说明和定义语句:考虑内存对齐,则变量aa所占内存的字节数是( )
cpp 复制代码
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博客

相关推荐
吴声子夜歌1 小时前
ApacheCommons——commons-pool2(高性能通用对象池框架)
java·开发语言·apache
kruptos6 小时前
分布式系统怎么“选主“?Raft 共识一次讲清
开发语言·分布式·php·共识算法
吴声子夜歌7 小时前
ApacheCommons——commons-cli(命令行参数解析)
java·开发语言·apache
benchmark_cc8 小时前
REST API 和 Python SDK 应该怎么选?量化交易数据接口选型实战
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
王的宝库8 小时前
Go 项目结构:从单文件到标准工程布局
开发语言·后端·golang
Tairitsu_H8 小时前
[C++] 深入理解红黑树:封装set与map
开发语言·c++·set·map·红黑树·模拟实现
泡海椒8 小时前
JQuick-Curl 性能分析:并发场景下的性能表现与调优,第三方接口调用不只要快写也要稳跑
java·开发语言·okhttp
小智老师PMP8 小时前
2026深度解析|PMP第八版与NPDP核心侧重点本质区别(管理类证书怎么选)
开发语言·分布式·算法·职场和发展·产品经理
江畔柳前堤9 小时前
前台·中台·后台:2026年AI原生时代的架构全景图
开发语言·人工智能·算法·机器学习·架构·scala·ai-native
Figo_Cheung10 小时前
Figo基于RNC理论的宇宙演化第七纪元猜想
开发语言·php