#C1106. 指针与引用专项练习

指针与引用专项练习

C++ 指针与引用 专项练习(10 题)

本卷共 10 题:单项选择题 6 题、多项选择题 3 题、判断题 1 题。

一、单项选择题

  1. 执行下方代码后,*ptr 最终数值是?
int currLv = 8, nextLv = 11;
int *ptr = &currLv;
*ptr = *ptr + 3;
ptr = &nextLv;

{{ select(1) }}

  • 8
  • 11
  • currLv 的内存地址
  • nextLv 的内存地址
  1. 已有 int a = 10, *p = &a;,执行 int b = 20; p = &b; 后,下列结果正确的是?

{{ select(2) }}

  • a 的值变为 20
  • p 存储的地址修改为变量 b 的地址
  • *p 的值依旧是 10
  • &a 的值发生改变
  1. 下方代码的输出是?
int a = 4;
int *p = &a;
*p += 6;
cout << a << " " << *p;

{{ select(3) }}

  • 10 10
  • 4 10
  • 10 4
  • 4 6
  1. 下方代码的输出是?
int a = 5, b = 10;
int *p = &a;
p = &b;
*p = 20;
cout << a << " " << b;

{{ select(4) }}

  • 5 20
  • 20 20
  • 5 10
  • 20 10
  1. 关于指针,下列说法正确的是?

{{ select(5) }}

  • 指针存储的是变量的值
  • 通过指针可以间接访问和修改它所指向的变量
  • 指针只能指向整型变量
  • 指针定义之后不能改变指向
  1. 下方代码的输出是?
int a = 9;
int *p = &a;
*p += 5;
cout << a;

{{ select(6) }}

  • 14
  • 9
  • 5
  • 编译报错

二、多项选择题

  1. 下列属于指针安全、合规操作的是

{{ multiselect(7) }}

  • 直接给指针赋字面数字地址(如 0x1234)
  • 使用 * 解引用,读取指针指向内存存储的数据
  • 两个同类型指针变量,可使用 > < == 比较地址大小
  • 使用 & 取普通变量地址,赋值给同类型指针
  1. 对比指针与引用,下列正确描述是

{{ multiselect(8) }}

  • 引用定义时必须绑定已有变量,不能存在无主引用
  • 指针变量可多次修改指向,切换指向不同变量
  • 引用一旦绑定变量,无法重新绑定其他变量
  • 指针和引用都不能修改外部原始变量的值
  1. 关于指针操作,下列说法正确的有

{{ multiselect(9) }}

  • & 用于取变量地址
  • * 用于解引用,访问指针指向的内存
  • 多级指针(如 int **)可实现多级间接访问
  • 指针只能用 & 取址赋值,没有其他赋值方式

三、判断题

  1. C++ 中引用一旦绑定变量,后续可以通过赋值操作将其重新指向另一个变量。

{{ select(10) }}

  • 正确
  • 错误