#5000. 【指针】【客观题2】

【指针】【客观题2】

单选题

第1题 以下哪个符号用于声明指针? {{ select(1) }}

  • &
  • *
  • ->
  • #
  1. 引用可以重新绑定到其他变量吗? {{ select(2) }}
  • 可以
  • 不可以
  • 仅当引用是const
  • 仅当使用int const
  1. 以下代码的输出是?

    int x = 5;  
    int &y = x;  
    y = 8;  
    cout << x;
    

    {{ select(3) }}

  • 5
  • 8
  • 编译错误
  • 随机值
  1. 指针的特性是?

    {{ select(4) }}

  • 必须初始化
  • 是变量的别名
  • 可以指向空地址
  • 不能进行算术运算
  1. 以下代码中,p的类型是?

    int a = 10;  
    int *const p = &a;
    

    {{ select(5) }}

  • 指向常量的指针
  • 常量指针(地址不可变)
  • 指向常量的常量指针
  • 普通指针
  1. 以下代码的输出是?

    int a = 3, b = 5;  
    int *p = &a;  
    p = &b;  
    cout << *p;
    

    {{ select(6) }}

  • 3
  • 5
  • a的地址
  • b的地址
  1. 引用的底层实现通常是?

    {{ select(7) }}

  • 宏定义
  • 指针
  • 结构体
  • 函数
  1. 以下哪项是“指向int的常量指针”的正确声明?

    {{ select(8) }}

  • int const *p;
  • const int *p;
  • int *const p;
  • const int *const p;
  1. 关于引用,错误的是?

    {{ select(9) }}

  • 必须初始化
  • 可以指向空值
  • 引用是变量的别名
  • 引用不可重新绑定
  1. 以下代码中,ptr最终指向?

    int arr[] = {1, 2, 3};  
    int *ptr = arr;  
    ptr++;
    

    {{ select(10) }}

  • arr[0]的地址
  • arr[1]的地址
  • arr[2]的地址
  • 随机地址
  1. 以下哪项可能会导致编译错误?

    {{ select(11) }}

  • int *p = nullptr;
  • int &r = *p;
  • int a; int &r = a;
  • int *p; p = nullptr;
  1. const int &r = 5; 是否合法?

    {{ select(12) }}

  • 合法
  • 非法,因为字面量不能绑定到非const引用
  • 合法,但必须用const引用
  • 非法,必须用指针
  1. 以下代码的输出是?

    int a = 10;  
    int *p = &a;  
    int **pp = &p;  
    cout << **pp;
    

    {{ select(13) }}

  • 10
  • a的地址
  • p的地址
  • 编译错误
  1. 关于指针和引用,正确的是?

    {{ select(14) }}

  • 指针可以为空,引用不能
  • 指针需要解引用,引用直接使用
  • 两者都可以重新绑定
  • A和B都对
  1. 以下代码的输出是?

    int x = 5;  
    int *p = &x;  
    int &r = *p;  
    r = 10;  
    cout << x;
    

    {{ select(15) }}

  • 5
  • 10
  • 地址值
  • 编译错误
  1. 已知 int x = 10; int *p = &x;,以下哪项是“指向指针常量(地址不可变)的引用”?

    {{ select(16) }}

  • const int *&r = p;
  • int &const *r = p;
  • int *const &r = p;
  • const int &*r = p;
  1. 函数参数为引用时,实参如何传递?

    {{ select(17) }}

  • 拷贝值
  • 直接操作原变量
  • 传递地址
  • 由编译器决定
  1. 以下代码的输出是?

    int a = 5;  
    int *p = &a;  
    (*p)++;  
    cout << a;
    

    {{ select(18) }}

  • 5
  • 6
  • 地址值
  • 编译错误
  1. 以下代码的输出是?

    int arr[3] = {10, 20, 30};  
    int *p = arr + 1;  
    cout << *p;
    

    {{ select(19) }}

  • 10
  • 20
  • 30
  • 编译错误
  1. 调用 void func(int &x) 的正确方式是?

    {{ select(20) }}

  • func(5);
  • func(a);aint变量)
  • func(&a);
  • func(*a);
  1. 关于 const 指针,正确的是?

    {{ select(21) }}

  • const int *p 可修改指针地址
  • int *const p 可修改指向的值
  • const int *const p 不可修改值和地址
  • 以上全对
  1. 引用作为函数返回值的风险是?

    {{ select(22) }}

  • 返回局部变量的引用
  • 返回动态内存的引用
  • 返回全局变量的引用
  • 无风险
  1. 以下代码的输出是?

    int a = 7;  
    int *p = &a;  
    int &r = *p;  
    r = 9;  
    cout << a;
    

    {{ select(23) }}

  • 7
  • 9
  • 地址值
  • 编译错误
  1. 以下代码的输出是?

    int a = 5;  
    int *p1 = &a;  
    int *p2 = p1;  
    (*p2)++;  
    cout << a;
    

    {{ select(24) }}

  • 5
  • 6
  • 地址值
  • 编译错误
  1. 合法的指针运算是?

    {{ select(25) }}

  • 指针相加
  • 指针相减(同一数组内)
  • 指针与整数相乘
  • 指针与浮点数相加
  1. int **pp 的含义是?

    {{ select(26) }}

  • 指向指针的指针
  • 二维数组指针
  • 指向整型的引用
  • 无效声明
  1. 以下代码的问题在于?

    int *p;  
    *p = 5;
    

    {{ select(27) }}

  • 未初始化指针
  • 内存泄漏
  • 野指针(指向无效内存地址)
  • A和C都对

判断题

  1. 引用必须初始化,且不能指向其他变量。

{{ select(28) }}

  • 正确
  • 错误
  1. int *p; 是合法的未初始化指针声明。

{{ select(29) }}

  • 正确
  • 错误
  1. const int *p 表示指针指向的地址不可修改。

{{ select(30) }}

  • 正确
  • 错误
  1. 引用的地址和其绑定的变量地址相同。

{{ select(31) }}

  • 正确
  • 错误
  1. 函数参数传递引用时,形参和实参共享内存地址。

{{ select(32) }}

  • 正确
  • 错误
  1. 指针的指针(int **pp)可指向二维数组。

{{ select(33) }}

  • 正确
  • 错误
  1. int a; int &b=a; int &c=b; 是合法的。

{{ select(34) }}

  • 正确
  • 错误
  1. 引用可以指向另一个引用。

{{ select(35) }}

  • 正确
  • 错误
  1. const int &r = 10; 是合法的。

{{ select(36) }}

  • 正确
  • 错误
  1. 指针可以指向引用。

{{ select(37) }}

  • 正确
  • 错误
  1. int &r = nullptr; 是合法的。

{{ select(38) }}

  • 正确
  • 错误
  1. void func(int *&p) 可以修改指针的地址。

{{ select(39) }}

  • 正确
  • 错误
  1. int a[] = {1,2,3}; int *p = &(a + 1); 是合法的。

{{ select(40) }}

  • 正确
  • 错误