#6086. gesp四级真题分类二:指针与引用

gesp四级真题分类二:指针与引用

二、指针与引用(共23题)

题目文件

指针与引用(共23题)

1. 下面C++代码执行后输出是( )。

int arr[3] = {1,2,3};
int *p = NULL;
p = arr;
p++;
cout << *p << endl;

{{ select(1) }}

  • 1,2,3
  • 1
  • 2
  • 3

2. 如果变量 x 的地址是 0x6ffe14,下面C++代码执行以后输出的是( )。

int *p = NULL;
int x = 2;
p = &x;
p++;
cout << p << endl;

{{ select(2) }}

  • 0x6ffe11
  • 0x6ffe14
  • 0x6ffe18
  • 0x6ffe15

3. 下面C++代码执行后输出是( )。

int main() {
    char *p = "I love GESP!";
    cout << p+5 << endl;
}

{{ select(3) }}

  • e
  • I lov
  • e GESP!
  • GESP!

4. 下面C++代码执行以后输出的是( )。

int rc = 5;
int main() {
    int rc;
    cout << ++rc << endl;
}

{{ select(4) }}

  • 0
  • 1
  • 6
  • 不确定

5. 假设变量 a 的地址是 0x6ffe14,下面程序的输出是( )。

int main() {
    int *p;
    int a = 10;
    p = &a;
    p++;
    cout << p << endl;
}

{{ select(5) }}

  • 10
  • 0x6ffe14
  • 0x6ffe15
  • 0x6ffe18

6. 如果下列程序输出的地址是 0x6ffe00,则 cout<<a+1<<endl; 输出的是( )。

int main() {
    int a[2][3] = {0};
    cout << a << endl;
}

{{ select(6) }}

  • 0x6ffe04
  • 0x6ffe0C
  • 0x6ffe08
  • 0x6ffe00

7. 运行下面代码,屏幕上输出是( )。

int arr[3] = {24, 9, 7};
int* p = arr;
p++;
cout << *p << endl;

{{ select(7) }}

  • 24
  • 9
  • 7
  • 不确定

8. 运行下面代码片段的结果是( )。

int x = 20;
int y = 24;
int* p = &x;
int* q = &y;
p = q;

{{ select(8) }}

  • 将 x 赋值为 24
  • 将 y 赋值为 20
  • 将 q 指向 x 的地址
  • 将 p 指向 y 的地址

9. 运行下面代码片段后,x 和 *p 的结果分别是( )。

int x = 20;
int* p = &x;
*p = *p + 2;

{{ select(9) }}

  • 20 20
  • 20 22
  • 22 20
  • 22 22

10. 执行下面代码后,输出为( )。

int main() {
    int a = 5;
    int* p = &a;
    int** q = &p;
    **q += 7;
    cout << a << " " << *p;
}

{{ select(10) }}

  • 5 5
  • 12 12
  • 12 5
  • 5 12

11. 在C++中,声明一个指向整型变量的指针的正确语法是( )。

{{ select(11) }}

  • int* ptr;
  • *int ptr;
  • int ptr*;
  • ptr int;

12. 运行下面程序后变量 a 的值是( )。

int a = 42;
int* p = &a;
*p = *p + 1;

{{ select(12) }}

  • 42
  • 43
  • 编译错误
  • 不确定

13. 小杨想让指针 p 指向整数变量 x,正确写法是( )。

{{ select(13) }}

  • int p = &x
  • int *p = x
  • int *p = &x
  • p = *x

14. 小杨写了如下的指针接力程序,程序执行完后变量 a、*p1 和 *p2 的值分别是( )。

int a = 5;
int *p1 = &a;
int *p2 = p1;
*p2 = 10;

{{ select(14) }}

  • 5 10 10
  • 5 10 15
  • 10 10 10
  • 5 5 10

15. 执行完下面的代码后,*(p + 5) 和 arr[1][1] 的值分别是( )。

int arr[3][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}};
int* p = &arr[0][0];

{{ select(15) }}

  • 5 6
  • 6 5
  • 5 5
  • 6 6

16. 已知:

int a[3][4] = {
    {1,2,3,4},
    {5,6,7,8},
    {9,10,11,12}
};
int (*p)[4] = a;

则表达式 *(*(p+2)+1) 的值为( )。

{{ select(16) }}

  • 6
  • 10
  • 9
  • 11

17. 下面C++代码正确声明了一个返回int类型、接受两个int参数的函数。(判断题)

int add(int, int);

{{ select(17) }}

  • 正确
  • 错误

18. 下面C++代码的输出是15。(判断题)

void foo(int x) { x+=5; }
int main() { int a=10; foo(a); cout << a << endl; }

{{ select(18) }}

  • 正确
  • 错误

19. 以下代码能够正确初始化指针。(判断题)

int a = 5;
int *p = a;

{{ select(19) }}

  • 正确
  • 错误

20. 执行下面C++代码将输出11。(判断题)

int x = 10;
void f() {
    int x = x + 1;
    cout << x << endl;
}
int main() { f(); }

{{ select(20) }}

  • 正确
  • 错误

21. 执行下面C++代码将输出10。(判断题)

void func(int* p) { *p = 10; }
int main() { int a = 5; func(&a); cout << a << endl; }

{{ select(21) }}

  • 正确
  • 错误

22. 下面这段代码不合法,因为每一行都必须显式初始化3个元素。(判断题)

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

{{ select(22) }}

  • 正确
  • 错误

23. 以下代码能够正确初始化指针。(判断题)

int a = 5;
int *p = a;

{{ select(23) }}

  • 正确
  • 错误