在 C 中将参数传递给结构

fan*_*gio 1 c arrays pointers

我想创建以下结构。

struct student
{
    char name[n+1];
    int length = n; 
};
Run Code Online (Sandbox Code Playgroud)

其中n是一个特定的整数。是否可以将参数传递给结构或其他解决方案来实现类似的目标?也许是指点。所以我想要基于长度的不同结构。

tst*_*isl 5

您可以使用灵活的数组成员:

struct student {
  int length;
  char name[];
};
Run Code Online (Sandbox Code Playgroud)

该结构体的长度分配和初始化n如下:

struct student *s = malloc(sizeof *s + n + 1);
s->length = n;
// initialize s->name
strcpy(s->name, the_name_of_n_chars);
Run Code Online (Sandbox Code Playgroud)

不再使用时请记得致电frees