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


    第一题

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

    1. int fun(char *s)
    2. {
    3. char *t = s;
    4. while(*t++);
    5. return(t-s);
    6. }

    A: 比较两个字符的大小 

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

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

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

    答案及解析 B

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

    又定义了一个字符指针 指向 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、以下程序运行后的输出结果是( )

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

    A: 运行后报错 

    B: 6 6 

    C: 6 11 

    D: 5 10

    答案及解析 

    指针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:指向同一数组的两指针变量进行关系运算可表示它们所指数组元素之间的位置关系。

  • 相关阅读:
    项目管理逻辑:项目经理如何掌控项目生命周期, 才能避免身心俱疲?
    java中HashMap的实现原理
    MySQL:存储引擎
    MyBatis-Plus(3) 自定义逻辑删除插件 -- 全局处理xml中的SQL
    自然激励技术 (NExT) 与特征系统实现算法 (ERA)(Matlab代码实现)
    关于原型设计在高等教育行业中的运营分析报告
    Vue中path和component属性
    Kalman滤波器的原理与实现
    基于SpringBoot的SSMP整合案例(消息一致性处理与表现层开发)
    【JavaWeb】案例一:记录用户的上次访问时间
  • 原文地址:https://blog.csdn.net/2302_76941579/article/details/134274856