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(" %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(" %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(" %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(" %s,%s,%d",px->email,px->addr,px->num); 68 } 69 getchar(); 70 71 72 }
注意测试的时候main处修改 和注释就好了