#PTRT02. 指针程序阅读与辨错

指针程序阅读与辨错

指针程序阅读与辨错

说明

本题为指针专题理论练习。请根据 C++ 指针基础知识选择最合适的答案。

1. 下列程序调用普通 swap(int a,int b) 后输出是什么? int x=10,y=20; swap(x,y); cout<<x<<" "<<y;

{{ select(1) }}

  • A. 10 20
  • B. 20 10
  • C. 10 10
  • D. 编译错误

2. 若 void swap(int *a,int *b) 内正确交换 *a*b,调用 swap(&x,&y) 后 x=10,y=20 的输出是( )。

{{ select(2) }}

  • A. 10 20
  • B. 20 10
  • C. 20 20
  • D. 地址值

3. 执行 int a=5,b=10; int *p1=&a,*p2=&b; *p1=*p2+5; 后 a 的值是( )。

{{ select(3) }}

  • A. 5
  • B. 10
  • C. 15
  • D. 20

4. 已知 int arr[5]={1,2,3,4,5}; int *p=arr;*(p+2) 的值是( )。

{{ select(4) }}

  • A. 1
  • B. 2
  • C. 3
  • D. 4

5. 代码 for(int i=0;i<5;i++) sum += *(p+i); 对数组 {1,2,3,4,5} 求得 sum 为( )。

{{ select(5) }}

  • A. 5
  • B. 10
  • C. 15
  • D. 20

6. int a=10; float *p=&a; 会出现( )。

{{ select(6) }}

  • A. 类型不匹配
  • B. 野指针
  • C. 空指针
  • D. 正常运行

7. int *p=nullptr; 之后,下面哪项是正确判断?

{{ select(7) }}

  • A. 可以直接执行 *p=10
  • B. p 指向 a
  • C. p 当前不指向有效对象,不能解引用
  • D. nullptr 等价于随机地址

8. 语句 int *p = &10; 的判断是( )。

{{ select(8) }}

  • A. 正确,p 指向常量 10
  • B. 错误,不能直接对字面量 10 取地址
  • C. 正确,p 保存整数 10
  • D. 只有运行时才报错

9. void inc(int *p){ (*p)++; } int x=5; inc(&x); 执行后 x 为( )。

{{ select(9) }}

  • A. 5
  • B. 6
  • C. 4
  • D. 不确定

10. int a=1; int *p=&a; int *q=p; *q=7; 执行后 a 的值是( )。

{{ select(10) }}

  • A. 1
  • B. 7
  • C. p 的地址
  • D. q 的地址