一个动态内存分配的数组–C和指针-动态内存分配习题


假设一个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/274802.html

(0)
上一篇 2022年7月17日
下一篇 2022年7月17日

相关推荐

发表回复

登录后才能评论