我有一个数组,里面每个成员都是结构体指针,我应该怎么给这个数组分配空间?
指针变量的长度都是固定的,与你指向什么东西没关系的。
#include
#define N 3
struct student
{
long int num;
char name[20];
float score[3];
float aver;
};
int main()
{
void Input(struct student stu[]);
struct student max(struct student stu[]......
答案就在这里:c语言结构体数组指针
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?
数组长度乘以4(32位),而且其数组内的指针在使用前也要申请结构体大小的空间
数组不用分配空间,如3楼说的一样!当你使用数组中的结构体指针时再申请动态空间!
数组不用分配空间 指针在使用的时候直接molloc,使用后记得free,例如:
char *p;
p=char *molloc(100);
.
.
.
free (p);
struct name*a[10];暂且取数组名为a,
当编译器翻译这条指令,1:会首先知道原来是一个名为a的且长度为10的数组,2:然后向前扫描,哦原来是成员是结构体为name的指针,然后1+2就是这条语句的意思,因为是指针,所以长度还是10个字节,如果不是指针,长度就是10乘以成员类型。
数组不用分配空间 指针在使用的时候直接molloc,使用后记得free,例如:
char *p;
p=char *molloc(100);
.
.
.
free (p);
不愧是精英云集之地,感觉我也受教了~
推荐题主看一本书:《C语言与陷阱》,对你理解C语言的一些细节会很有帮助哦~
数组不用分配空间 指针在使用的时候直接molloc,使用后记得free,例如:
char *p;
p=char *molloc(100);
.
.
.
free (p);
长知识
用new关键字,后面结构体的名称
指针在使用的时候需要malloc空间(动态malloc),而数组是不需要的(固定大小),一般malloc和free是成对出现的!如:
char p = NULL; /数组成员代替p即可*/
p = (char )malloc(length);/*length是你需要分配的空间大小,其值视情况而定/
if(p != NULL){
......
}
.....
free(p);
注: 使用完成后记得free,否则会引起内存泄露!