如何在C结构内使用指针

  • 本文关键字:指针 结构 c struct char malloc
  • 更新时间 :
  • 英文 :


可以使用char name[size]声明所需大小的字符串,但是,如果我想使用char *name,我将如何指定使用malloc()的大小?

我发现我不能在结构声明中使用char *name = malloc(5*1);

我尝试使用

struct data
{
    int age;
    char *name;
};

运行此代码并输入我遇到的细分故障的字符串。我必须如何指定大小?

您需要指定指针的大小,您需要将指针指向有效内存,仅此而已。此外,使用malloc()并非必要。您可以

  • 通过分配器功能,malloc()或family分配内存到指针
  • 将指针指向任何其他char变量(或数组)的地址

要详细说明,您可以创建一个类型struct data的可变var,然后将var->name指向有效的内存块。

也就是说,要使用malloc()来分配所需的内存尺寸,您需要将所需的大小作为malloc()(以字节)的参数提供。

假设您创建了类型struct data

的变量a
struct data a;

现在将内存分配给a的名称成员,

a.name = malloc(size_of_name + 1); //+1 for '' character at the end

现在您可以使用a.name存储并使用字符串

不要忘记在终止程序之前释放分配的数据。为此使用free(a.name)

您需要分配以下记忆:

data* r = malloc(sizeof(data));
r->name= malloc(20);

假设名称可以容纳20个字符

您需要提供一种初始化结构的方法。例如:

void init_data (struct data *p_data) {
  if (p_data)
    p_data->name = malloc(STR_LEN);
}

您应该将其与函数搭配以释放内存:

void release_data (struct data *p_data) {
  if (p_data)
    free(p_data->name);
}

每当您想使用结构时,它都会被调用。

struct data d;
init_data(&d);
/* use d */
release_data(&d);

相关内容

  • 没有找到相关文章

最新更新