MST

星途 面试题库

面试题:C语言数组元素访问技巧之中等难度

假设有一个二维数组 `int arr[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};`,请编写一个函数,实现通过行优先遍历的方式,将数组中所有元素值翻倍,并返回翻倍后的数组指针。注意,不能使用额外的数组。
23.1万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>

int* doubleArray(int arr[3][4]) {
    for (int i = 0; i < 3; ++i) {
        for (int j = 0; j < 4; ++j) {
            arr[i][j] *= 2;
        }
    }
    return &arr[0][0];
}

你可以这样调用这个函数:

int main() {
    int arr[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
    int* result = doubleArray(arr);
    for (int i = 0; i < 3; ++i) {
        for (int j = 0; j < 4; ++j) {
            std::cout << *(result + i * 4 + j) << " ";
        }
        std::cout << std::endl;
    }
    return 0;
}