有没有办法在c中创建一个可变长度的数组?

rip*_*ppy 7 c arrays function

是否有任何方法(除了malloc)用于创建具有用户输入大小的数组?

NIl*_*rma 6

这一切都取决于编译器.

允许使用可变长度自动数组ISO C99,作为扩展,GCC在C90模式和C++中接受它们.这些数组的声明与任何其他自动数组一样,但其长度不是常量表达式.存储在声明点分配,并在退出支撑级别时释放.例如:

 FILE *
 concat_fopen (char *s1, char *s2, char *mode)
 {
   char str[strlen (s1) + strlen (s2) + 1];
   strcpy (str, s1);
   strcat (str, s2);
   return fopen (str, mode);
 }
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅


Arj*_*kar 2

一种方法是使用 VLA(C99 定义了所谓的“可变长度数组”)。

这是一个例子:

#include <stdio.h>

int use_a_vla (int n)
{
  int vla[n]; /* Array length is derived from function argument.  */

  vla[0] = 10;
  vla[n-1] = 10;

  return 0;
}

int main (void)
{
  int i;

  scanf ("%d", &i); /* User input.  */

  use_a_vla (i);
}
Run Code Online (Sandbox Code Playgroud)