c语言修改线性表开辟空间大小
时间: 2023-05-31 16:06:52 浏览: 66
要修改线性表的开辟空间大小,可以使用realloc函数。
realloc函数可以重新分配已经分配的内存空间,它有两个参数,第一个参数是指向已分配内存空间的指针,第二个参数是需要重新分配的空间大小。如果第一个参数是NULL,则相当于调用malloc函数。
使用realloc函数可以在原有空间的基础上扩大或缩小空间大小,如果扩大空间大小,新的空间会从原有空间末尾开始分配。如果缩小空间大小,原有空间末尾多余的空间会被释放掉。
下面是一个示例代码:
```
#include <stdio.h>
#include <stdlib.h>
int main()
{
int* arr = malloc(sizeof(int) * 5); // 开辟一个大小为5的数组
if (arr == NULL)
{
printf("malloc failed\n");
return 1;
}
// 输出原始数组内容
printf("original array:\n");
for (int i = 0; i < 5; i++)
{
arr[i] = i;
printf("%d ", arr[i]);
}
printf("\n");
// 扩大数组空间大小
arr = realloc(arr, sizeof(int) * 10);
if (arr == NULL)
{
printf("realloc failed\n");
return 1;
}
// 输出扩大后的数组内容
printf("expanded array:\n");
for (int i = 0; i < 10; i++)
{
arr[i] = i;
printf("%d ", arr[i]);
}
printf("\n");
// 缩小数组空间大小
arr = realloc(arr, sizeof(int) * 3);
if (arr == NULL)
{
printf("realloc failed\n");
return 1;
}
// 输出缩小后的数组内容
printf("shrunk array:\n");
for (int i = 0; i < 3; i++)
{
arr[i] = i;
printf("%d ", arr[i]);
}
printf("\n");
free(arr); // 释放内存空间
return 0;
}
```