Dúvida

Por que o programa não deixa digitar o endereço?

# include <stdio.h>
# include <stdlib.h>
# include <conio.h>
# include <string.h>
# include <locale.h>
# define MAX 50
struct pessoa {
char nome[MAX];
int idade;
char endereco[MAX];
};
int main(){
struct pessoa p;
printf("Informe o nome:");
fgets(p.nome, MAX, stdin);
printf("Informe a idade");
scanf("%d", &p.idade);
printf("Informe o endereco");
fgets(p.endereco, MAX, stdin);
//imprimindo dados
printf("Nome: %s \n", p.nome);
printf("Idade: %d \n", p.idade);
printf("Endereco: %s \n", p.endereco);
}

Você não alocou memória para p.

Como faço isso?