多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# C 程序:在结构中动态存储数据 > 原文: [https://www.programiz.com/c-programming/examples/structure-dynamic-memory-allocation](https://www.programiz.com/c-programming/examples/structure-dynamic-memory-allocation) #### 在此示例中,您将学习存储用户使用动态内存分配输入的信息。 要理解此示例,您应该了解以下 [C 编程](/c-programming "C tutorial")主题: * [C 指针](/c-programming/c-pointers) * [C 动态内存分配](/c-programming/c-dynamic-memory-allocation) * [C 结构](/c-programming/c-structures) * * * 该程序要求用户存储`noOfRecords`的值,并使用`malloc()`函数为`noOfRecords`结构变量动态分配内存。 * * * ## 演示结构的动态内存分配 ```c #include <stdio.h> #include <stdlib.h> struct course { int marks; char subject[30]; }; int main() { struct course *ptr; int i, noOfRecords; printf("Enter the number of records: "); scanf("%d", &noOfRecords); // Memory allocation for noOfRecords structures ptr = (struct course *)malloc(noOfRecords * sizeof(struct course)); for (i = 0; i < noOfRecords; ++i) { printf("Enter the name of the subject and marks respectively:\n"); scanf("%s %d", &(ptr + i)->subject, &(ptr + i)->marks); } printf("Displaying Information:\n"); for (i = 0; i < noOfRecords; ++i) printf("%s\t%d\n", (ptr + i)->subject, (ptr + i)->marks); return 0; } ``` **输出** ```c Enter the number of records: 2 Enter the name of the subject and marks respectively: Programming 22 Enter the name of the subject and marks respectively: Structure 33 Displaying Information: Programming 22 Structure 33 ```