MST
星途 面试题库

面试题:C语言二维数组的动态内存分配与使用

编写一个程序,实现动态分配一个二维整数数组,其行数和列数由用户输入。然后,给数组中的每个元素赋值为其行号和列号之和。最后,输出这个二维数组的所有元素。注意要正确处理内存的分配与释放,避免内存泄漏。
14.1万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>

int main() {
    int rows, cols;
    std::cout << "请输入行数: ";
    std::cin >> rows;
    std::cout << "请输入列数: ";
    std::cin >> cols;

    // 动态分配二维数组
    int** arr = new int*[rows];
    for (int i = 0; i < rows; ++i) {
        arr[i] = new int[cols];
    }

    // 给数组元素赋值
    for (int i = 0; i < rows; ++i) {
        for (int j = 0; j < cols; ++j) {
            arr[i][j] = i + j;
        }
    }

    // 输出二维数组
    for (int i = 0; i < rows; ++i) {
        for (int j = 0; j < cols; ++j) {
            std::cout << arr[i][j] << " ";
        }
        std::cout << std::endl;
    }

    // 释放内存
    for (int i = 0; i < rows; ++i) {
        delete[] arr[i];
    }
    delete[] arr;

    return 0;
}
rows = int(input("请输入行数: "))
cols = int(input("请输入列数: "))

# 动态分配二维数组并赋值
arr = [[i + j for j in range(cols)] for i in range(rows)]

# 输出二维数组
for row in arr:
    for num in row:
        print(num, end=" ")
    print()

在C++ 代码中:

  1. 首先通过new关键字动态分配二维数组。
  2. 接着通过嵌套循环给每个元素赋值为行号和列号之和。
  3. 再通过嵌套循环输出二维数组。
  4. 最后使用delete[]正确释放分配的内存,避免内存泄漏。

在Python代码中:

  1. 使用列表推导式动态生成二维数组并同时赋值。
  2. 同样通过嵌套循环输出二维数组。由于Python有自动垃圾回收机制,无需手动释放内存。