之前这篇文章是初学顺序表时写的,很混乱且有错,更正一下。
1.关于结构体
l:sq型指针,指向:存放【目标数据1】的首地址。
l->elem:int型指针,指向:存放【存放目标数据1的首地址】的首地址
malloc:这个函数原意是,在内存开辟一段地址,这段地址的首地址存在返回的那个指针变量里。
由于顺序表的操作特性,它选用指针作为数据结构,而指针声明一定要明确指向,所以才有malloc。
2.顺序表的正确数据结构体如下,malloc返回给结构体指针变量,那么就是在首地址后添加多个结构体。
typedef struct
{
int *elem;
int length;
}sq;
int main()
{
sq *l;
l=(sq *)malloc(sizeof(sq)*1005);
l->length=0;
printf("%d\n",l->length);
return 0;
}
3.以下代码就是结构体错误,malloc返回到了存放指针变量的地址里,简单说就是在存放地址的地方后开了一堆空间——没有用,但不报错。
sq *l;
l=(sq *)malloc(sizeof(sq));
l->elem=(int *)malloc(sizeof(int)*1005);