c - 在 C 中初始化高维数组的最佳方法是什么?

标签 c

假设我有一个 9 维数组:

int arr[4][4][4][4][4][4][4][4][4];

我想把每个元素都初始化为1。

我知道我可以使用多个循环来初始化它:

for(int i1 = 0; i1 < 4; i ++) {
     ...// eight more similiar loops
}

但是看起来很丑。

这样做的最佳做法是什么?也许我可以使用宏?

最佳答案

在 C 中,多维数组是连续的,因此您可以通过指针初始化 arr 来利用这一点。

    int* parr = (int*)arr;
    for (int i = 0; i < ((sizeof(arr)/sizeof(int)); ++i)
        parr[i] = 1;

请注意,这在数组分解为指针的情况下不起作用(例如,如果它作为参数传递给函数)。

关于c - 在 C 中初始化高维数组的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22800797/

相关文章:

c - 指向数组的指针错误

c - 尝试理解向 VS 项目添加文件的简单任务

c++ - 并行计算奇偶校验

c - 什么是 xutils.h,我需要什么 cflags/libs/packages?

c - 如何让 callgrind 转储源代码行信息?

c - 如何获取 pthread_attr_t 上的 detachstate?

c - NetHack 源代码中的 "NEARDATA"是什么意思?

c - 如何使用数组和 fwrite 垂直调整 bmp 文件大小?

c - k&r 中的 getint 模糊定义,其中 ungetch 的奇怪行为

c - 获取 sscanf 读取的字符数?