MST

星途 面试题库

面试题:C语言指针的指针与函数

编写一个函数 `void modifyArray(int **ptr, int rows, int cols)`,该函数接受一个指向指针的指针 `ptr`,它指向一个二维数组,函数的功能是将数组中的每个元素都乘以2。假设这个二维数组是动态分配内存的,在主函数中创建这样的二维数组并调用这个函数进行修改,然后打印修改后的数组。
33.2万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>
#include <stdlib.h>

// 函数声明
void modifyArray(int **ptr, int rows, int cols);

int main() {
    int rows = 3;
    int cols = 4;

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

    // 初始化数组
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            arr[i][j] = i * cols + j;
        }
    }

    // 调用函数修改数组
    modifyArray(arr, rows, cols);

    // 打印修改后的数组
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            printf("%d ", arr[i][j]);
        }
        printf("\n");
    }

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

    return 0;
}

// 函数定义
void modifyArray(int **ptr, int rows, int cols) {
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            ptr[i][j] *= 2;
        }
    }
}