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

本文涉及的产品
云解析DNS,个人版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: C语言--每日选择题--Day36

第一题

1. 以下关于指针的说法,正确的是()


A:int *const p 与 int const *p等价

B:const int *p 与 int *const p等价

C:const int *p 与 int const *p 等价

D:int *p[10] 与 int (*p)[10] 等价

答案及解析 C

const 在*的左侧,修饰的是指针指向的内容不能被修改,const在*的右侧,修饰的指针本身不被修改,所以不等价;所以A、B错误,C正确;

D:错误,前者指的是指针数组,因为[ ]的优先级高于*,所以p会先和[ ]结合,是一个数组,然后数组元素是int*类型,后者就是数组指针了,*p是一个指针,指向的是int [10]这个数组

第二题

2. 以下程序的输出的结果是()

int a=3;
int main ()
{
    int s=0;
    {
        int a = 5;
        s += a++;
    }
    s += a++;
    printf ("%d\n", s);
}

A:8

B:10

C:7

D:11

答案及解析 A

本题考查的是局部变量和全局变量,首先要学会分辨什么是全局变量和局部变量

局部变量:在大括号里面定义的变量

全局变量:在大括号外定义的变量;

所以int a = 3;的a是全局变量,int a = 5;的a是局部变量;

在main函数里面的大括号中,s += a++;这个a是局部变量的a,因为在进行运算的时候,如果全局变量和局部变量名相同,局部变量优先,所以s = 5;

但是出了大括号之后,局部变量a就销毁了,所以局部变量的生命周期仅限于大括号里;

那么第二个s += a++的a就是全局变量的a了,s = 8;

第三题

3. 在32位机器中,如下代码:

void example(char str[])
{
    printf("%d", sizeof(str));
    return;
}
int main(){
    char str[] = "hello world";
    example(str);
    return 0;
}

A:0

B:4

C:23

D:24

答案及解析 C

本题考查的是你对数组传参的理解,数组传参的时候,是把数组名传过去了,数组名是首元素地址,也就是把首元素地址传过去了,所以我们的数组传参传的是指针,别看他写的是数组的样子,但是本质是指针,那指针的大小在32位机器就是4字节。

第四题

4. 下述程序的输出是()

#include<stdio.h>
int main()
{
    static char *s[] = {"black", "white", "pink", "violet"};
    char **ptr[] = {s+3, s+2, s+1, s}, ***p;
    p = ptr;
    ++p;
    printf("%s", **p+1);
    return 0;
}

A:ink

B:pink

C:white

D:hite

答案及解析 A

本题考查的是指针的应用,直接图解,绿色的p是++p之后的p

第五题

5. 以下代码输出什么()

#include <stdio.h>
int main()
{
   int a[5] = {1, 2, 3, 4, 5};
   int *p = (int *)(&a + 1);
   printf("%d", *(p - 1));
}

A:1

B:2

C:5

D:出现错误

答案及解析 C

本题考查的是解引用和指针的加法:深入理解:指针变量的解引用 与 加法运算-CSDN博客


相关文章
|
1月前
|
C语言
C语言—每日选择题—Day60
C语言—每日选择题—Day60
|
1月前
|
编译器 C语言
C语言—每日选择题—Day61
C语言—每日选择题—Day61
|
1月前
|
编译器 C语言
C语言—每日选择题—Day57
C语言—每日选择题—Day57
|
1月前
|
C语言
C语言—每日选择题—Day56
C语言—每日选择题—Day56
|
1月前
|
编译器 C语言 C++
从C语言到C++⑥(第二章_类和对象_中篇_续)大练习(日期类)+笔试选择题(下)
从C语言到C++⑥(第二章_类和对象_中篇_续)大练习(日期类)+笔试选择题
32 2
从C语言到C++⑥(第二章_类和对象_中篇_续)大练习(日期类)+笔试选择题(下)
|
1月前
|
算法 C语言 C++
从C语言到C++_14(vector的常用函数+相关选择题和OJ题)(中)
从C语言到C++_14(vector的常用函数+相关选择题和OJ题)
59 1
|
1月前
|
算法 编译器 C语言
从C语言到C++⑥(第二章_类和对象_中篇_续)大练习(日期类)+笔试选择题(上)
从C语言到C++⑥(第二章_类和对象_中篇_续)大练习(日期类)+笔试选择题
29 3
|
1月前
|
编译器 C语言 C++
从C语言到C++⑥(第二章_类和对象_中篇_续)大练习(日期类)+笔试选择题(中)
从C语言到C++⑥(第二章_类和对象_中篇_续)大练习(日期类)+笔试选择题
26 1
|
1月前
|
存储 编译器 C语言
从C语言到C++_22(继承)多继承与菱形继承+笔试选择题(下)
从C语言到C++_22(继承)多继承与菱形继承+笔试选择题
28 0
|
1月前
|
Java 编译器 定位技术
从C语言到C++_22(继承)多继承与菱形继承+笔试选择题(中)
从C语言到C++_22(继承)多继承与菱形继承+笔试选择题
25 0