c语言 - 我尝试在结构中使用 malloc 分配内存,但它不起作用?为什么?


## Code to read general information ##
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>    
typedef struct{
    char *name =(char*)malloc(20);
    int age;
    int id;
}info;
main()
{
    info a;
    printf("Enter Name :");
    scanf(" %[^n]",a.name);
    a.age=19;
    a.id=11700055;
    printf("Name :%snAge :%dnId :%dnSize of info 
:%dn",a.name,a.age,a.id,sizeof(a));
    return 0;
}


  https://i.stack.imgur.com/WoA0T.png

这段代码有什么问题? 它显示了我不明白的错误,例如信息没有名为"名称"的成员?

它还说姓名,年龄,ID不是信息的成员。

在结构声明中,您正在分配不允许的内存。

如果你需要里面的数组

typedef struct{
    char name[20];
    int age;
    int id;
}info;

或者,您可以这样做

#define MAXLEN 20
    typedef struct{
        char* name;
        int age;
        int id;
    }info;
info p;
p.name = malloc(MAXLEN);
if(!p.name){ perror("malloc");exit(1);}
...

应该是int main(void)而不是main().

相关内容

  • 没有找到相关文章

最新更新