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

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

第一题

1. i = 5,j = 7,i | j 等于多少?

A:1

B:3

C:5

D:7

答案及解析 D

|这个是按位或运算符,两个数的二进制位,有1为1,同0为0;

i的二进制:0101

j的二进制:0111

结果:        0111 = 7

第二题

2. 编译和执行如下c语言代码,系统将会输出什么?

#include <stdio.h>
int main() 
{char c = '0';printf("%d %d", sizeof(c), sizeof(char));return 0;
}

A:1 4

B:2 2

C:1 1

D:2 1

答案及解析 C

sizeof是计算数据类型的空间;

这就表明了,sizeof括号里的变量是什么数据类型,计算出的结果就是该数据类型对应的字节,如果sizeof括号里面是个表达式,需要计算的,记住,sizeof只是算数据类型的空间,并不会计算表达式,只会推测这个表达式的数据类型;

第三题

3. 下面代码段输出的结果是()

int **pp, *p, a=10, b=20;
pp = &p;
p = &a;
p = &b;
printf("%d,%d", *p, **pp);

A:10 10

B:10 20

C:20 10

D:20 20

答案及解析 

这里是涉及一级指针和二级指针的知识,先给大家画个图:

首先pp是一个二级指针,存的是一级指针的地址,存的是p指针的地址;

其次p指针,先后存放的是a的地址,b 的地址

最后p是存b的地址;

一级指针存的是对应变量的地址,一级指针解引用是取到的这个变量;

二级指针存的是一级指针的地址,二级指针解引用一次,取到这个一级指针,再解引用是取到这个一级指针指向的变量;

第四题

4. 在64位系统以及64位编译器下,以下描述正确的是()

struct T 
{char a;int *d;int b;int c:16;double e;
};
T *p;

A:sizeof(p) == 24

B:sizeof(*p) == 24

C:sizeof(p->a) == 1

D:sizeof(p->e) == 4

答案及解析 

本题考查的是对指针类型的理解和结构体的内存对齐;

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

64位系统的指针类型占8字节,32位系统的指针类型占4字节;

结构体类型指针,访问内部数据要用 ' -> ',结构体变量访问内部数据用 ' . '

A:错误:p是一个结构体指针类型,只要是指针就是4/8个字节,而系统为64位,结果为8

C:正确:p->a 的数据类型是char类型,字节为1,结果正确

D:错误:p->e 的数据类型是double,字节为8,错误

B:错误,需要计算结构体的内存,直接上图,知识点在上面博客:

这里有一个特殊的成员int c : 16;这个叫位段,简单理解就是你给c赋值,会发生截断(二进制),保留的位数就是冒号后面的值,这里也就是保留16个比特位;

比如你p->c = 10;

二进制:0000 0000 0000 1010

截断:0000 0000 0000 1010

结果:10

比如你的二进制位:1111 1010 0001 0101 0011

截断:1111 / 1010 0001 0101 0011

结果:1010 0001 0101 0011

第五题

5. 下列程序的运行结果是 3, 5,请为横线处选择合适的程序( )

#include <stdio.h>struct S
{int n;char c[10];
} *p;int main()
{struct S a[3] = {{3, "abc"}, {5, "def"}, {7, "ghi"}};p = a;printf("%d,", (*p).n);printf("%d\n", ______);return 0;
}

A:(++p) -> n

B:(a+1) -> n

C:p++ -> n

D:(p+1) -> n

答案及解析 ABD

首先这是一个结构体的数组,很容易理解;数组每一个元素都是结构体;

所以我们一步一步来;

要想找到5,就需要找到这个结构体数组的第二个元素

方式:a + 1,p + 1;

之后再取到对应的结构体内部成员

方式:(a + 1)->n,(p + 1)->n

A:正确,++p是前置++,返回的是++之后的值,相当于p+1

B:正确

C:错误,p++是后置++,返回的是++之前的值,相当于p,取到的是3

D:正确

http://www.lryc.cn/news/248728.html

相关文章:

  • LeetCode 274. H指数——排序
  • 【洛谷 B2038】奇偶 ASCII 值判断 题解(顺序结构+取余)
  • Ubuntu 20.4 源代码方式安装 cdo(笔记)
  • 电子学会C/C++编程等级考试2022年12月(三级)真题解析
  • 二叉树的最近公共祖先(C++实现)
  • 【conda】容易遗忘的命令使用总结
  • 蓝桥杯第一天-----时间显示
  • 多文件夹图片预处理:清除空值、重置大小、分割训练集
  • 【Java】集合 之 使用 Map
  • 第二证券:股票几点到几点开盘?
  • goweb入门教程
  • 量子计算:探索未来的计算技术
  • HarmonyOS应用开发者基础认证考试题目及答案
  • c# 文件读取和写入
  • 【MySQL库的操作】
  • rocketmq 集群环境部署及与spring cloud 集成
  • SpringBoot——配置及原理
  • fiddler抓包安卓
  • Maven 进阶学习指南---setting详解
  • 人工智能与我们的生活
  • 前端将blob转换为可下载的url及下载
  • LVS-DR实验
  • MYSQL索引使用注意事项
  • 深入理解Java中的String、StringBuilder和StringBuffer(每天一个技术点,第一天)
  • PHP逻辑运算符学习资料
  • 深入解析CPU工作原理与细节
  • 计算机网络(超详解!) 第二节 物理层(上)
  • c++ 打怪升级
  • 代码随想录第十三天(一刷C语言)|翻转二叉树对称二叉树
  • Temu已成拼多多第二曲线