C语言--每日五道选择题--Day3

第一题

1、有以下函数,该函数的功能是( )

cpp 复制代码
int fun(char *s)
{
    char *t = s;
    while(*t++);
    return(t-s);
}

A: 比较两个字符的大小

B: 计算s所指字符串占用内存字节的个数

C: 计算s所指字符串的长度

D: 将s所指字符串复制到字符串t中

答案及解析 B

首先我们先看函数是传入了一个字符串 s

又定义了一个字符指针 t指向 s

再进入循环

循环在* t🟰0 时停止,同时 t++

t 最后会停在字符串结束的 '\0' 之后的一个位置,因为是后置++,当前会保留++之前的值,然后++

t作为尾部指针减去头部指针就是整个字符串,占用内存的字节数,包含\0在内;

为什么C不对呢?

因为字符串长度不包括最后的\0

第二题

2、若有" float a[3] = {1.5,2.5,3.5} , *pa = a;*(pa++) *= 3; ",则 *pa 的值是( )
A: 1.5

B: 2.5

C: 3.5

D: 4.5

答案及解析 B

我们定义了一个float类型的a数组,又定义了一个float类型的指针pa指向的是a

单独的数组名代表首元素地址,所以pa指向a数组的第一个元素。

而 pa++ 返回值仍是操作之前的值;所以*(pa++)取pa指向的地址的值,也就是a[0]的值

*(pa++)*=3将a[0]变为原来的3倍,也就是数组a的第一个值为4.5;

但是由于pa++之后,pa指针移动了sizeof(float)个字节,pa指向a[1],所以值为2.5

第三题(做错了)

3、以下程序运行后的输出结果是( )

cpp 复制代码
#include <stdio.h>
int main()
{
    int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, *p = a + 5, *q = NULL;
    *q = *(p+5);
    printf("%d %d\n", *p, *q);
    return 0;
}

A: 运行后报错

B: 6 6

C: 6 11

D: 5 10

答案及解析 A

指针q初始化为NULL,接着又解引用指针q,是错误的**,对NULL指针是不能解引用的**

第四题

4、设有定义 char *p[]={"Shanghai","Beijing","Honkong"}; 则结果为 j 字符的表达式是( )
A: *p[1] +3

B: *(p[1] +3)

C: *(p[3] +1)

D: p[3][1]

答案及解析 B

首先p是个char*类型的数组

p[1]拿到字符串"beijing"的首地址,再加3便是'j'的地址,解引用拿到'j'

第五题

5、以下叙述中正确的是( )
A: 即使不进行强制类型转换,在进行指针赋值运算时,指针变量的基类型也可以不同

B: 如果企图通过一个空指针来访问一个存储单元,将会得到一个出错信息

C: 设变量p是一个指针变量,则语句p=0;是非法的,应该使用p=NULL;

D: 指针变量之间不能用关系运算符进行比较

答案及解析 B

A :描述不正确,不同类型指针一般不可以直接赋值;

C:p=NULL;和p=0;是等价的;

D:指向同一数组的两指针变量进行关系运算可表示它们所指数组元素之间的位置关系。

相关推荐
weixin_462446231 分钟前
EasyExcel 动态修改模板 Sheet 名称:自定义 SheetWriteHandler 拦截器
java·开发语言·easyexcel
绝世唐门三哥18 分钟前
使用Intersection Observer js实现超出视口固定底部按钮
开发语言·前端·javascript
Ayu阿予27 分钟前
C++从源文件到可执行文件的过程
开发语言·c++
C++业余爱好者28 分钟前
JVM优化入门指南:JVM垃圾收集器(GC)介绍
java·开发语言·jvm
福尔摩斯张29 分钟前
基于C++的UDP网络通信系统设计与实现
linux·c语言·开发语言·网络·c++·tcp/ip·udp
Trouvaille ~33 分钟前
【Java篇】基石与蓝图::Object 类与抽象类的双重奏
java·开发语言·javase·抽象类·类与对象·基础入门·object类
hkNaruto34 分钟前
【规范】Linux平台C/C++程序版本发布调试规范手册 兼容银河麒麟
linux·c语言·c++
卜锦元35 分钟前
Golang中make()和new()的区别与作用?
开发语言·后端·golang
Light601 小时前
破局“数据孤岛”:构建业务、财务、指标三位一体的智能数据模型
java·大数据·开发语言
guygg881 小时前
基于Matlab的压缩感知信道估计算法实现
开发语言·算法·matlab