1 struct dangdangtest 2 { 3 char email[500]; 4 char name[30]; 5 char addr[100]; 6 int num; 7 int bugnum; 8 char tel[20]; 9 char phone[20]; 10 double RMB; 11 12 13 }; 14 void main2() 15 { 16 //struct dangdangtest dd[1024*1024];//數組越界 17 //動態分配一個元素 18 struct dangdangtest *p = (struct dangdangtest *)malloc(sizeof(struct dangdangtest)*1); 19 //寫數據 20 sprintf(p->email,"15465325698@qq.com");//初始化 21 sprintf(p->name,"lj"); 22 sprintf(p->addr,"重慶"); 23 p->num = 100; 24 p->bugnum = 1000; 25 sprintf(p->tel,"4521562"); 26 sprintf(p->phone,"15865321512"); 27 p->RMB = 52.24; 28 //讀數據 29 printf("\n%s,%s,%s,%d,%d,%s,%s,%f",p->email,p->name,p->addr,p->num,p->bugnum,p->tel,p->phone,p->RMB); 30 31 getchar(); 32 } 33 34 void main() 35 { 36 int i; 37 struct dangdangtest *p = NULL; 38 struct dangdangtest *px = NULL; 39 p= (struct dangdangtest *)malloc(sizeof(struct dangdangtest)*10); 40 //方式一 P[i]等價於一個結構體 數組訪問的方式 41 //p[i]=p+i 42 /*for(i=0;i<10;i++) 43 { 44 sprintf(p[i].name,"lj%d",i); 45 sprintf(p[i].addr,"重慶%d",i); 46 p[i].num = 100; 47 printf("\n%s,%s,%d",p[i].name,p[i].addr,p[i].num); 48 }*/ 49 50 //指針訪問的方式 51 //for(i=0;i<10;i++) 52 //{ 53 // //加上大括號 避免優先級的歧義 54 // sprintf((*(p+i)).name,"lj%d",i); 55 // sprintf((*(p+i)).addr,"重慶%d",i); 56 // (*(p+i)).num = 100; 57 // printf("\n%s,%s,%d",(*(p+i)).name,(*(p+i)).addr,(*(p+i)).num); 58 //} 59 60 //指針輪尋 61 px = p; 62 for(px;px<p+10;px++) 63 { 64 sprintf(px->email,"lj%x",px); 65 sprintf(px->addr,"重慶%x",px); 66 px->num = 100; 67 printf("\n%s,%s,%d",px->email,px->addr,px->num); 68 } 69 getchar(); 70 71 72 }
注意測試的時候main處修改 和注釋就好了
