C 从不同函数中的数组中检索值

C 从不同函数中的数组中检索值,c,arrays,segmentation-fault,global-variables,C,Arrays,Segmentation Fault,Global Variables,我试图用c编写一个程序,其中数组的长度在主函数中声明,然后调用一个函数并分配内存和初始化值,然后主函数打印值。我已经全局声明了数组及其长度,但是当main函数从数组中检索值时,我得到一个segfault,我假设这是因为只有数组上的指针是全局的,而不是值本身。除了合并函数,还有什么方法可以解决这个问题吗 我试图用c编写一个程序,其中数组的长度在主函数中声明,然后调用一个函数并分配内存和初始化值,然后主函数打印值 我已经全局声明了数组及其长度,但是当main函数从数组中检索值时,我得到一个segfa

我试图用c编写一个程序,其中数组的长度在主函数中声明,然后调用一个函数并分配内存和初始化值,然后主函数打印值。我已经全局声明了数组及其长度,但是当main函数从数组中检索值时,我得到一个segfault,我假设这是因为只有数组上的指针是全局的,而不是值本身。除了合并函数,还有什么方法可以解决这个问题吗

我试图用c编写一个程序,其中数组的长度在主函数中声明,然后调用一个函数并分配内存和初始化值,然后主函数打印值

我已经全局声明了数组及其长度,但是当main函数从数组中检索值时,我得到一个segfault,我假设这是因为只有数组上的指针是全局的,而不是值本身

尽量避免全球性的。 不要混淆数组和指针。见本报告第6节

除了合并函数,还有什么方法可以解决这个问题吗


是。

您的代码在哪里?请阅读
#include <stdio.h>
#include <stdlib.h>
int *foo(size_t len) {
    int *values = calloc(len, sizeof *values);
    if (values) {
        values[2] = 42;
    }
    return values;
}
int main(void) {
    size_t len = 5; // length of array declared in main()
    int *p = foo(len); // foo() allocates and initializes
    for (int k = 0; k < len; k++) printf("%d: %d\n", k, p[k]); // main() prints the values
    free(p);
    return 0;
}