我正在尝试用c语言编写一个程序,该程序在main函数中声明了数组的长度,然后调用了一个函数并分配了内存并初始化了值,然后main函数打印了这些值。我已经全局声明了数组及其长度,但是当主函数从数组“检索”值时,我得到了一个段错误,我认为这是因为只有数组上的指针是全局的,而不是值本身。除了合并功能外,还有什么方法可以解决?
答案 0 :(得分:0)
我正在尝试用c语言编写一个程序,该程序在main函数中声明了数组的长度,然后调用了一个函数并分配了内存并初始化了值,然后main函数打印了这些值。 / p>
#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;
}
我已经全局声明了数组及其长度,但是当主函数从数组中“检索”值时,我得到了一个段错误,我认为这是因为只有数组上的指针是全局的,而不是重视自己。
尽量避免使用全局变量。
不要混淆数组和指针。参见the c-faq的第6节。
除了合并功能之外,还有其他解决方法吗?
是的