Pointers 生成新结构数据类型并返回指针的函数

Pointers 生成新结构数据类型并返回指针的函数,pointers,struct,malloc,typedef,Pointers,Struct,Malloc,Typedef,我正在尝试制作一个程序,它创建一个新的数据类型数据结构。然后,函数为堆上的新数据类型分配内存。然后我想改变number和name的值,我该怎么做呢?我尝试的方式似乎不起作用: #include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct{ char name[32]; int number; char checksu

我正在尝试制作一个程序,它创建一个新的数据类型数据结构。然后,函数为堆上的新数据类型分配内存。然后我想改变number和name的值,我该怎么做呢?我尝试的方式似乎不起作用:

  #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>

    typedef struct{
      char name[32];
      int number;
      char checksum;
    }data_t;


    data_t *new_data(char *name, int number){

      data_t *ptr=malloc(sizeof(data_t));
      strcpy(ptr->name ,name)
      (ptr->number)=number;



      return ptr; 

    }
#包括
#包括
#包括
类型定义结构{
字符名[32];
整数;
字符校验和;
}数据;
数据*新数据(字符*名称,整数){
data_t*ptr=malloc(sizeof(data_t));
strcpy(ptr->name,name)
(ptr->编号)=编号;
返回ptr;
}

您已经在函数中定义了结构。它不存在于函数之外。因此,编译器显示未知数据类型错误。
typedef
放在函数外部。

您已经在函数内部定义了结构。它不存在于函数之外。因此,编译器显示未知数据类型错误。
typedef
放在函数外部。

我认为这是因为
data\u t
仅在
new\u data
的范围内定义,因此从函数外部的角度来看,返回类型没有意义。将结构定义移到外部。我认为这是因为
data\u t
仅在
new\u data
的范围内定义,因此从函数外部的角度来看,返回类型没有意义。将结构定义移到外部。