1. 程式人生 > >動態儲存結構體陣列

動態儲存結構體陣列

在實際的程式設計中,資料的儲存是常常遇到的,陣列作為最簡單實用的資料結構,常常被使用,而在c語言中陣列是靜態的,不允許靜態的建立陣列,而在實際應用中,如果固定陣列的大小,在不知道輸入資料的數量時,往往會造成陣列定義過大,產生浪費;或是陣列定義過小,不足夠儲存資料的問題。
除此之外,結構體能儲存大量的資訊且方便使用,那麼可以將二者結合起來,通過動態的為結構體分配記憶體,來達到一個不限定大小的結構體陣列用於存放資料。
實現方法如下:

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#define LEN sizeof(struct Matrix) struct Matrix { int serial; int row; int coloum; }; main() { int len, i; struct Matrix *pArr; printf("請輸入陣列的元素個數:\n"); scanf_s("%d", &len); pArr = (struct Matrix *)malloc(len*LEN);//為結構體分配儲存空間 printf("為陣列賦值:\n"); for (i = 0
; i<len; i++) { pArr[i].serial = i + 1; printf("第%d個元素:", pArr[i].serial); scanf_s("%d %d", &pArr[i].row, &pArr[i].coloum); } printf("陣列輸出:\n"); for (i = 0; i<len; i++) { printf("%4d%4d%4d\n", pArr[i].serial, pArr[i].row, pArr[i].coloum); } system
("pause"); return 0; }

通過這個簡單的辦法,就能較為方便的處理我們需要儲存的資料,這樣的陣列藉助了連結串列的想法,但是在呼叫中應該會比連結串列方便一點。