结构体数组与用malloc申请结构体空间的对比

Posted 自由一份子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结构体数组与用malloc申请结构体空间的对比相关的知识,希望对你有一定的参考价值。

结构体数组与用malloc申请结构体空间的对比

  文章标题听起来很拗口,可能我描述的不太清楚,还是看例程吧:

  我先写以前最早会用的malloc:

  

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 
 5 struct student
 6 {
 7     char *name;
 8     int age;
 9 };
10 
11 int main()
12 {
13     struct student *p_student=NULL;
14     p_student=((struct student *)malloc(sizeof(struct student)));
15 
16     p_student->name="Tom";
17     p_student->age=23;
18 
19     printf("name:%s\n",p_student->name);
20     printf("age:%d\n",p_student->age);
21 
22     free(p_student);
23   p_student=NULL;//注意,释放掉了malloc空间,但结构体指针依然存在,仍需要指向NULL;
24 return 0; 25 }

  上面程序简单明了,就是申请个结构体指针,然后开辟一段内存空间,准备存放“struct student”类型的变量数据,变量都初始化后,打印出来,最后释放malloc空间。

  下面再来一个结构体数组:

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 
 5 struct student
 6 {
 7     char *name;
 8     int age;
 9 };
10 
11 int main()
12 {
13     struct student p_student[sizeof(struct student)]={"Tom",23};
14 
15     printf("name:%s\n",p_student->name);
16     printf("age:%d\n",p_student->age);
17     return 0;
18 }

  这是结构体数组,就是:“struct student”类型的数组“p_student”,空间大小为“sizeof(struct student)”,初始化时,直接在后面写上就行了。

  通过上面两个例子,我发现第二种结构体数组好用些。

 

 

以上是关于结构体数组与用malloc申请结构体空间的对比的主要内容,如果未能解决你的问题,请参考以下文章

C 语言结构体 ( 结构体浅拷贝 )

C语言,怎么为动态结构体数组分配内存

c99柔性数组

Swift中结构体的方法调度&内存分区

指针 分配空间

c语言函数能不能返回结构体