このプログラムでtest1とtest2の違いは何ですか?
test1だとt[500]の配列が新たにスタックに作られるという
違いだけですか?

#include<stdio.h>
#include<stdlib.h>
void test1(int t[500]){
 printf("%d ",t[500-1]+1);
}
void test2(int *t){
 printf("%d ",t[500-1]+1);
}
void main(){
 int *t,i;
 t=(int *)malloc(sizeof(int)*500);
 for(i=0;i<500;i++)t[i]=i;
 test1(t);
 test2(t);
 free(t);
}