#6010. 指针与数组专项练习2
指针与数组专项练习2
一、单选题(共15题,每题2分)
- 执行以下代码,输出结果是什么?{{ select(1) }}
int arr[] = {5, 10, 15, 20}; int* p = arr; cout << *p++ << endl; cout << *p;
- 5 和 5
- 5 和 10
- 10 和 10
- 10 和 15
- 对于
int a[3][4],以下哪个表达式得到的是元素a[2][1]的地址?{{ select(2) }}
a[2] + 1*(a + 2) + 1&a[2][1]- 以上都是
- 关于指针减法,以下说法正确的是?{{ select(3) }}
- 指针减去指针得到的是字节数差值
- 指针减去整数得到的是新地址
- 两个任意指针都可以相减
- 指针减法结果类型是int*
- 执行以下代码,
ptr指向哪里?{{ select(4) }}int nums[] = {1, 2, 3, 4, 5}; int* ptr = nums + 3; ptr -= 2;
- nums[0]
- nums[1]
- nums[2]
- nums[3]
- 对于
int arr[5],&arr + 1表示什么?{{ select(5) }}
- 数组第二个元素的地址
- 数组最后一个元素的地址
- 数组末尾之后的下一个地址(跳过整个数组)
- 编译错误
- 执行以下代码,输出什么?{{ select(6) }}
int a[] = {1, 2, 3, 4}; int* p = a; int* q = p + 3; cout << q - p;
- 12
- 3
- 4
- 不确定
- 对于二维数组
int matrix[3][3],以下哪个表达式是合法的右值?{{ select(7) }}
matrix++matrix[1]++*(matrix + 1) + 1&(*matrix + 1) + 1
- 执行以下代码,输出什么?{{ select(8) }}
int x = 10; int* p = &x; int** pp = &p; cout << **pp;
- x的地址
- 10
- p的地址
- 编译错误
- 关于
int* p = new int[10];,以下释放内存的正确方式是?{{ select(9) }}
delete p;free(p);delete[] p;malloc_free(p);
- 对于
int arr[5] = {0}; int* p = arr + 5;,p - arr的值是多少?{{ select(10) }}
- 20
- 5
- 不确定
- 编译错误
- 执行以下代码,输出什么?{{ select(11) }}
int arr[3][2] = {{1, 2}, {3, 4}, {5, 6}}; int* p = &arr[0][0]; p += 3; cout << *p;
- 3
- 4
- 5
- 6
- 以下哪个选项不是取地址操作的正确用法?{{ select(12) }}
int* p = &x;(x是int变量)int* p = &(x + y);(x和y是int)int* p = &arr[0];(arr是数组)int** pp = &p;(p是int*)
- 对于一维数组
int arr[10],arr和&arr[0]的关系是?{{ select(13) }}
- 类型相同,值相同
- 类型不同,值相同
- 类型相同,值不同
- 类型不同,值不同
- 执行以下代码,输出什么?{{ select(14) }}
int arr[] = {10, 20, 30, 40}; int* p = arr; int* q = p + 1; cout << *q << " " << q[1];
- 20 20
- 20 30
- 20 40
- 30 40
- 对于二维数组
int a[3][4],以下哪个表达式得到的是第1行的首地址?{{ select(15) }}
a[1]*(a + 1)&a[1][0]- 以上都是
二、判断题(共10题,每题2分)
- 对空指针进行解引用操作会导致程序崩溃。{{ select(16) }}
- 正确
- 错误
- 指针变量可以进行乘除运算。{{ select(17) }}
- 正确
- 错误
- 对于数组int a[10],a和&a的值相同但类型不同。{{ select(18) }}
- 正确
- 错误
- 两个指针相减的结果类型是int。{{ select(19) }}
- 正确
- 错误
- 在C++中,可以定义void类型的变量,但不能定义void类型的指针。{{ select(20) }}
- 正确
- 错误
- 对于二维数组,a[i][j]的指针等价形式是
*(*(a+i)+j)。{{ select(21) }}
- 正确
- 错误
- 指针的指针可以用于动态创建二维数组。{{ select(22) }}
- 正确
- 错误
- 对数组名使用&运算符得到的是整个数组的地址。{{ select(23) }}
- 正确
- 错误
- 指针加法运算中,p + n 和 n + p 的含义相同。{{ select(24) }}
- 正确
- 错误
- 使用指针访问数组元素一定比下标访问速度快。{{ select(25) }}
- 正确
- 错误