-
C语言中,为结构体分配内存主要有两种方式:静态分配和动态分配。
-
静态分配内存实际上就是在定义结构体时,直接在栈区分配所需要的内存空间。示例如下:
#include <stdio.h>
#include <stdlib.h>
struct Student {
int id;
char name[20];
float score;
};
int main() {
struct Student stu; // 等价于声明栈区内存
stu.id = 1;
strcpy(stu.name, "小明");
stu.score = 99.5;
printf("学生ID:%d\n", stu.id);
printf("学生姓名:%s\n", stu.name);
printf("学生成绩:%f\n", stu.score);
return 0;
}
在该示例中,定义了一个结构体Student,然后通过静态分配内存的方式,在声明结构体变量时,同时在栈区分配了所需的内存空间,即在程序执行时,结构体变量stu所占用的内存空间是在栈区分配的。接下来,为结构体赋值,输出学生的信息。
- 动态分配内存就是在运行时通过malloc分配一部分内存空间,然后把结构体的地址赋值给一个指针变量,该指针变量指向刚才分配的内存空间。示例如下:
#include <stdio.h>
#include <stdlib.h>
struct Student {
int id;
char name[20];
float score;
};
int main() {
struct Student *stu;
stu = (struct Student *) malloc(sizeof(struct Student));
stu->id = 1;
strcpy(stu->name, "小明");
stu->score = 99.5;
printf("学生ID:%d\n", stu->id);
printf("学生姓名:%s\n", stu->name);
printf("学生成绩:%f\n", stu->score);
free(stu); // 释放动态分配的内存空间
return 0;
}
在该示例中,定义了一个结构体Student指针变量stu,通过malloc动态分配内存空间大小为结构体Student的大小,所分配的内存空间位于堆区。接着,为结构体的成员赋值,输出学生的信息。最后,释放动态分配的内存空间。
以上就是C语言为结构体分配内存的完整使用攻略,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言为结构体分配内存 - Python技术站