将 3D 数组传递给函数。

Passing a 3D array to a function.

我很难将 3D 数组传递给函数。我已经用谷歌搜索死了,我想我明白了,但是代码在运行时崩溃了,没有输出。 (代码块,gcc)

#include <stdio.h>
#include <stdlib.h>
void foo(char (*foo_array_in_foo)[256][256]);
int main()
{
char foo_array[256][256][256];
int line_num = 0;
    printf("Hello world!\n");
    foo(foo_array);
    return 0;
}
void foo(char (*foo_array_in_foo)[256][256])
{
    printf("In foo\n");
}

你有堆栈溢出

256*256*256 = 16777216 bytes > STACK_SIZE

这就是分段错误的原因。

如果您需要如此大的内存,您必须使用 malloc

问题是 main

中的以下行
char foo_array[256][256][256];

这创建了一个 16777216 字节的局部变量,它溢出了堆栈。您可以通过声明数组 static

来更正问题
static char foo_array[256][256][256];

或使用malloc

为数组分配内存
char (*foo_array)[256][256] = malloc( 256 * 256 * 256 );
if ( foo_array == NULL )
    exit( 1 );      // if malloc fails, panic

如果选择malloc,用完记得free记忆

PS。 foo 函数的声明没有任何问题。