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

时间:2018-01-30 19:30:44

标签: 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 :%s\nAge :%d\nId :%d\nSize of info 
:%d\n",a.name,a.age,a.id,sizeof(a));
    return 0;
}




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

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

它还表示姓名,年龄,身份证不是信息的成员。

1 个答案:

答案 0 :(得分:4)

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

如果你需要里面的数组

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()