#include "stdio.h" #include "stdlib.h" #include "string.h" #define SIZEMAX 30 typedef struct DATE{ //定義數組結構體 int cur; //數組的下表標 int date; }Date,*pdate; pdate create_array(void); void show_list_array(pdate phead,int len); int array_length(pdate phead); int get_array_value(pdate phead,int i); int main(void){ pdate phead; int i,len,e; phead=create_array(); printf("輸入你要創建數組的長度(不超過30個):"); scanf("%d",&len); while(len>=SIZEMAX){ printf("你輸入的數超過的30;\n請重輸:"); scanf("%d",&len); } while(i<len){ phead[i].cur=++i; } phead[i].cur=0; for(i=0;i<len;i++){ printf("\n請輸入第%d個數據:",i+1); scanf("%d",&(phead+i)->date); } show_list_array(phead,len); e=get_array_value(phead,2); printf("長度:%d",array_length(phead)); printf("取值%d",e); return 0; } pdate create_array(void){ pdate pbase=(pdate)malloc(sizeof(Date)*SIZEMAX); if(NULL==pbase){ printf("內存分配失敗!\n"); exit(-1); } return pbase; } void show_list_array(pdate phead,int len){ int i; for(i=0;i<len;i++){ printf("%d\t",(phead+i)->date); } } int array_length(pdate phead){ int length=0; while((phead+length)->cur!=0){ length++; } return length; } int get_array_value(pdate phead,int i){ int k=(*phead).cur; int len=array_length(phead); int e; if(i>len){ return printf("ERROR;\n"); } while(k<i){ k=phead[k].cur; } e=phead[k].date; return e; }