结构体动态数组,结构体与指针

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 #include<stdlib.h>
 4 #include<memory.h>
 5 #include<malloc.h>
 6 
 7 
 8 struct csdn
 9 {
10     int id;
11     int num;
12 };
13 
14 void main()
15 {
16     int num;
17     scanf("%d",&num);
18     struct csdn *p1 = malloc(sizeof(struct csdn)*num);// 堆上
19     struct csdn *p2 = alloca(sizeof(struct csdn)*num);// 栈上
20     memset(p1, 0, sizeof(struct csdn)*num);// 内存清0
21     memset(p2, 0, sizeof(struct csdn)*num);// 内存清0
22 
23     printf("  p1     p2\n\n");
24     for (int i = 0; i < num; i++)
25     {
26         printf("%d  %d  ,  %d  %d\n", p1[i].id = i, p1[i].num, p2[i].id = i, p2[i].num);
27     }
28 
29     for (int i = 0; i < 10;i++)
30     {
31         int id;
32         scanf("%d",&id);
33         for (int j = 0; j < num;j++)
34         {
35             if (id == p1[j].id)
36             {
37                 p1[j].num++;
38                 p2[j].num++;
39                 break;
40             }
41         }
42     }
43 
44     printf("  p1     p2\n\n");
45     for (int i = 0; i < num;i++)//动态数组引用方式
46     {
47         printf("%d  %d  ,  %d  %d\n",p1[i].id=i,p1[i].num,p2[i].id=i,p2[i].num);
48     }
49 
50     free(p1);
51     system("pause");
52 }
53 
54 ///////////////////////////////////////////////////////////////////////////////////
55 
56 struct MyStruct
57 {
58     int id;
59     char str[10];
60 };
61 void main()
62 {
63     //三种用途
64     //struct csdn *p1 = malloc(sizeof(struct csdn)*num);//
65     struct csdn *p2 = (struct csdn[]){ 1, 2, 3, 4 };
66 
67     printf("\n%d", p2[1].id);
68     printf("\n%d", (&p2[1])->id);
69     printf("\n%d", (p2 + 1)->id);//p[i] *(p+i)   &p[i]= p+i
70     printf("\n%d", (*(p2 + 1)).id);//指针的形式
71 
72     //struct csdn  csdnx = { 10, 20 };
73     //struct csdn  *p = &csdnx;
74     //printf("\n%d", p->id);
75     //printf("\n%d", (*p).id);
76 
77     system("pause");
78 }
79 
80 void main()
81 {
82     struct csdn csdndata[100];  //int a[100]
83     struct csdn *p3 = csdndata;//int *p
84 
85     struct csdn csdndataX[10][10];  //int a[10][10]
86     struct csdn(*p4)[10] = csdndataX;//int (*p)[10]=malloc(sizeof(int)*100)
87 
88     struct csdn(*p5)[10] = malloc(sizeof(struct csdn) * 50);//
89     p5[3][4];
90 }

 

posted on 2015-05-18 10:15  Dragon-wuxl  阅读(417)  评论(0)    收藏  举报

导航