如何定义一个全局数组(获取另一个函数的长度)?

I'm*_*eOK 1 c arrays global-variables data-structures

我如何编写一个C代码,它有一个全局数组,从main()作为用户输入的长度?

我尝试了很多不同的方法,但到目前为止还没有一个方法,例如:

#include <stdio.h>

const int length;
int array[length];

int main()
{
    scanf("%d",&length);
}
Run Code Online (Sandbox Code Playgroud)

Wed*_*shi 7

参考你的代码,我可以指出:

int array[length];
Run Code Online (Sandbox Code Playgroud)

这当然不起作用,因为在编译时,它的大小array是未知的.您无法静态定义具有无限期(从编译期间编译器的角度来看)大小的数组!
如果要决定数组运行时的大小(即动态),则不能通过以您完成的方式声明变量来实现.

此外,使用constwith length将不起作用.摆脱const.

您可以而且应该做的是,获取int指针,并获取动态分配的内存的起始地址.你可以使用它的malloc功能.

我不会为你编写整个代码,但它应该包含类似于此的内容:

int *ptr = malloc(length * sizeof(int));
Run Code Online (Sandbox Code Playgroud)

从这里,如果用户输入10(即length= 10)例如,如果malloc没有返回NULL,那么你应该能够存储高达从存储在地址开始的10个整数ptr的指针,并通过增加指针的课程访问它们ptr.

如果您阅读了任何手册页,malloc您应该能够处理所需的头文件.我不是在写你需要的文件,因为我希望你自己阅读手册页和代码.