#3479. E4jxhm3

E4jxhm3

一、单选题(40分,每题10分)

  1. 有以下C++代码:
void change(int a, int &b, int arr[]) {
    a = a + 1;
    b = b + 1;
    arr[0] = arr[0] + 1;
}

int main() {
    int x = 5, y = 5;
    int num[3] = {5, 6, 7};
    change(x, y, num);
    cout << x << " " << y << " " << num[0] << endl;
    return 0;
}

输出结果是( )。 {{ select(1) }}

  • 5 5 5
  • 6 6 6
  • 5 6 6
  • 6 5 5
  1. 有以下C++代码:
struct Point {
    int x;
    int y;
};

int main() {
    Point p1 = {3, 4};
    Point p2 = p1;
    p2.x = 10;
    cout << p1.x << " " << p2.x << endl;
    return 0;
}

输出结果是( )。 {{ select(2) }}

  • 3 10
  • 10 10
  • 10 3
  • 3 3
  1. 有以下C++代码:
int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
int *p = &a[0][0];
cout << *(p + 4) << endl;

输出结果是( )。 {{ select(3) }}

  • 4
  • 5
  • 6
  • 3
  1. 有以下C++代码:
int x = 10;

void func() {
    x = 20;
    int x = 30;
    cout << x << endl;
}

int main() {
    func();
    cout << x << endl;
    return 0;
}

输出结果是( )。 {{ select(4) }}

  • 30 20
  • 20 20
  • 30 10
  • 20 10

二、多选题(30分,每题10分)

  1. 关于C++中指针的使用,下列说法正确的有( )。 {{ multiselect(5) }}
  • 指针变量存储的是另一个变量的地址
  • 通过指针可以间接访问其所指向的变量
  • 数组名可以看作指向数组首元素的指针
  • 指针变量本身不占用内存空间
  1. 关于二维数组与指针的关系,下列说法正确的有( )。 {{ multiselect(6) }}
  • 二维数组在内存中是连续存储的
  • &a[0][0] 表示二维数组首元素的地址
  • 可以通过指向首元素的指针遍历二维数组的所有元素
  • 对二维数组名取地址后,其类型与指向首元素的指针类型完全相同
  1. 关于函数参数传递,下列说法正确的有( )。 {{ multiselect(7) }}
  • 值传递时,形参修改不会影响实参
  • 引用传递时,形参和实参指向同一内存空间
  • 数组作为参数传递时,函数内可以修改原数组的元素
  • 引用传递时,形参和实参各自占用独立的内存空间

三、判断题(30分,每题10分)

  1. 在C++中,指针变量定义时必须立即初始化,否则编译会报错。( ) {{ select(8) }}
  • 正确
  • 错误
  1. 定义 int a[3][4]; 后,表达式 a[1][2] 等价于 *(*(a + 1) + 2)。( ) {{ select(9) }}
  • 正确
  • 错误
  1. 结构体变量作为函数参数时,如果不加引用符号 &,属于值传递,函数内对结构体成员的修改不会影响原结构体变量。( ) {{ select(10) }}
  • 正确
  • 错误