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)
参考你的代码,我可以指出:
int array[length];
Run Code Online (Sandbox Code Playgroud)
这当然不起作用,因为在编译时,它的大小array
是未知的.您无法静态定义具有无限期(从编译期间编译器的角度来看)大小的数组!
如果要决定数组运行时的大小(即动态),则不能通过以您完成的方式声明变量来实现.
此外,使用const
with 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
您应该能够处理所需的头文件.我不是在写你需要的文件,因为我希望你自己阅读手册页和代码.