【问题标题】:How to make a global array with size entered by user? [duplicate]如何制作用户输入大小的全局数组? [复制]
【发布时间】:2014-03-20 05:03:56
【问题描述】:

基本上,一旦用户在命令行中输入数组,我只会知道数组的大小。

我不知道如何告诉全局数组是那个大小。我应该用malloc() 来做吗?这个数组应该是全局的,因为它将被线程共享。

【问题讨论】:

标签: c multithreading global


【解决方案1】:

是的,malloc() 是完全正确的。只需有一个指向正确数组类型的全局指针即可:

int* myGlobalArray;

那么在你将用户的输入捕获为 int 之后:

myGlobalArray = malloc(sizeof(*myGlobalArray)*userSize);

【讨论】:

  • 这是最近的事情吗?什么编译器?我的 C 有点生锈了
  • myGlobalArray = malloc(userSize * sizeof *myGlobalArray); 更健壮。
  • @fivetentaylor:转换malloc() 的结果是合法的,但不是一个好主意。不,这不是最近的事情。对于任何符合 1989 ANSI 标准或更高版本的 C 编译器都是如此。点击 unwind 评论中的链接。
  • 如果您愿意,也可以,但括号不是必需的。 sizeof 的参数是带括号的类型名称或表达式。从语法上讲,sizeof 是像 !~ 这样的一元运算符,而不是函数。
【解决方案2】:

是的,只需使用malloc()。当然,在线程之间共享内存时要非常小心。

不需要一个实际的全局变量来保存分配的内存,只需在创建时将其传递给线程即可。

【讨论】:

    猜你喜欢
    • 2021-04-10
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    相关资源
    最近更新 更多