C语言中,事先不知道要输入多少个数字时,如何定义动态数组?

在c语言中,假如说我想直接输入若干个数字并储存到动态数组中,但我事先不知道具体有多少个数,应该如何定义动态数组?
就是说我不知道n*sizeof(int)中的n是多少怎么办?

#include<stdlib.h>
int n,i,*p;
是不是scanf("%d",&n);
p=(int )malloc(nsizeof(int))//申请n个int 类型数据内存空间