سلام دوستان من فرق این دو نوع تعریف متغیر های دینامیک رو نفهمیدم میشه بگید

کد اول :

int n;
scanf("%d",&n);
int a[n];

در این کد آرایه a به اندازه n ساخته میشه

کد دوم:


int *a;
int n;
scanf("%d",&n);
a=new int[n];


این کد هم این کارو میکنه
میشه بگید چه فرقی با هم دارن