我如何编写具有全局数组的 C 代码,该数组的长度从 main() 作为用户输入?
我尝试了很多不同的方法,但到目前为止都没有奏效,例如:
#include <stdio.h>
const int length;
int array[length];
int main()
{
scanf("%d",&length);
}
最佳答案
引用您的代码,我可以指出这一点:
int array[length];
这当然行不通,因为在编译时,array
的大小是未知的。您不能静态地定义一个大小不定(从编译器在编译过程中的角度来看)的数组!
如果你想决定数组运行时的大小(即动态地),你不能通过像你所做的那样声明变量来做到这一点。
此外,使用 const
和 length
在这里不起作用。去掉 const
。
您可以而且应该做的是,获取一个int
指针,并获取动态分配的内存的起始地址。
您可以使用 malloc
的功能。
我不会为您编写完整的代码,但它应该包含类似于以下内容的内容:
int *ptr = malloc(length * sizeof(int));
从这里开始,如果用户输入了 10(即 length
= 10),例如,和如果 malloc
不返回 NULL
,那么您应该能够从存储在 ptr
指针中的地址开始存储最多 10 个整数,当然可以通过递增指针 ptr
来访问它们。
如果您通读了malloc
的任何手册页,您应该能够处理您需要的头文件。我不会编写您需要的文件,因为我希望您自己阅读手册页和代码。
关于c - 如何定义一个全局数组(获取另一个函数的长度)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47413769/