例如一个结构体SeqList,声明如下:
#define ListSize 100 //表空间的大小
typedef int DateType;//数据类型定义需要“;”
typedef struct {
DateType data[ListSize];
int lengtn;
}SeqList;
在声明结构体变量的时候,可以为它分配内存空间,如下:
SeqList *L=new SeqList;
或者是:
SeqList *L=(SeqList*)malloc(sizeof(SeqList));
不可以是:
SeqList *L=(SeqList*)malloc(sizeof(SeqList*));
//注:在开辟内存空间的时候,求开辟空间大小的时候,参数应该是我们需要的类型名,而不是类型指针类型,不然的话,开辟的空间都是4,因为任意类型指针的大小都是4。
我们可以通过以下的方式查看指针类型变量的长度:
#include <iostream>
using namespace std;
typedef struct stu
{
int id;
char name[20];
}stu;
void main()
{
cout<<sizeof(char *)<<endl;
cout<<sizeof(int *)<<endl;
cout<<sizeof(float *)<<endl;
cout<<sizeof(double *)<<endl;
cout<<sizeof(stu *)<<endl;
}
/*output:*/
4
4
4
4
4
告诫自己:这是一个很简单的问题,但是也是很容易忽视的问题,如果不小心申请的空间过小的话,在接下来的情况下,就会遇到很多问题。所以,在使用的时候,确保不要写错。