動態儲存結構體陣列
阿新 • • 發佈:2018-12-31
在實際的程式設計中,資料的儲存是常常遇到的,陣列作為最簡單實用的資料結構,常常被使用,而在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;
}
通過這個簡單的辦法,就能較為方便的處理我們需要儲存的資料,這樣的陣列藉助了連結串列的想法,但是在呼叫中應該會比連結串列方便一點。