结构体动态数组,结构体与指针
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) 收藏 举报
浙公网安备 33010602011771号