【线性表问题】线性表创建时的一点问题

typedef struct{
int *data;
int length;
}sqlist;

void init_list(sqlist *l){
(*l).data=(int *)malloc(3*sizeof(int));
if(!(*l).data)printf("error!");
(*l).length=0;
}

int *data;和(*l).data=(int *)malloc(3*sizeof(int));,这两句话的意思是不是,创建一个int型指针*data指向data,然后为data开辟动态空间?

int *data其实也可以写成int data[];
就是在内存地址中创建一个名为data的指针,这个指针的地址也是数组data[]的地址;
(*l).data=(int *)malloc(3*sizeof(int));这句话的意思是为data开辟一个可以存放三个整型的空间,不算是动态开辟空间,因为没有循环而已源程序也指定了只开辟三个int空间而已。

是,data放在栈上,其指向的内容放在堆上,记得用完要free..
不懂看这里http://blog.csdn.net/evankaka/article/details/44457765