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

标签 c arrays data-structures global-variables

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

我尝试了很多不同的方法,但到目前为止都没有奏效,例如:

#include <stdio.h>

const int length;
int array[length];

int main()
{
    scanf("%d",&length);
}

最佳答案

引用您的代码,我可以指出这一点:

int array[length];

这当然行不通,因为在编译时,array 的大小是未知的。您不能静态地定义一个大小不定(从编译器在编译过程中的角度来看)的数组!
如果你想决定数组运行时的大小(即动态地),你不能通过像你所做的那样声明变量来做到这一点。

此外,使用 constlength 在这里不起作用。去掉 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/

相关文章:

条件堆免费

c - 如何找到矩阵 C 中的中位数(行和列)

c - 在 header 中声明枚举,在源文件中不可见?

c - 为什么 GCC 不自动向量化这个循环?

Javascript - 如何将数组推送到多维数组

java - 用Java编写链表的compareTO方法

php - 如何检查数组是否是特定对象的集合?

java - 操作数组上的字符串

haskell - Haskell 中的谓词逻辑

python - 给定 n 个表示对的元组,返回一个包含连接元组的列表