假设一个int类数组,需要在程序运行中中进行动态内存分配。
将首先使用malloc(),进行分配。
数组的首元素,代表除本身外,数组还有多少个元素。
例如,首元素为3,则代表数组应当具有4个元素。
同时要求,如果其余元素的个数与首元素的值不匹配时,需要对该数组的内存进行动态调整。
使用realloc()函数进行内存块的扩展或缩减。
以下为程序代码:
1 # include <stdio.h>
2 # include <stdlib.h>
3 # include <ctype.h>
4
5 int main()
6 {
7 int size;
8 int* array;
9 puts("The limit of the array");
10 if (scanf("%d", &size) == 1 && size >= 1)
11 {
12 array = (int*)malloc((size +1)* sizeof(int));
13 if (array != NULL)
14 *array = size;
15 else
16 exit(1);
17 }
18 else
19 {
20 puts("Illegal number for the size of array.");
21 exit(1);
22 }
23
24
25 int count = 0;
26 int value;
27 while (scanf("%d",&value)== 1)
28 {
29 count+=1;
30 if (count > size)
31 {
32 array = (int*)realloc(array, (count + 1) * sizeof(int));
33 if (array == NULL)
34 {
35 puts("Memory fail.");
36 exit(1);
37 }
38 }
39 array[count] = value;
40 }
41
42 if (count < size)
43 array =(int*) realloc(array, (count + 1) * sizeof(int));
44 if (array == NULL)
45 {
46 puts("Memory fail");
47 exit(1);
48 }
49
50 array[0] = count;
51
52
53 for (int i = 0; i < (count+1); i++) //打印测试
54 {
55 printf("%d ", array[i]);
56 }
57
58
59 free(array);
60
61 return 0;
62
63 }
原创文章,作者:254126420,如若转载,请注明出处:https://blog.ytso.com/tech/aiops/274802.html