c 数组:动态设置大小

作者:编程家 分类: arrays 时间:2025-09-03

# 动态设置C数组大小的方法与案例

在C语言中,数组是一种常见而有用的数据结构,但通常在声明时需要指定其大小。然而,有时我们希望在程序运行时动态设置数组的大小,以适应不同的需求。本文将介绍一些在C语言中实现动态数组大小设置的方法,并提供相应的案例代码。

## 1. 使用动态内存分配函数

C语言提供了动态内存分配函数,如`malloc`和`realloc`,允许在程序运行时分配和重新分配内存空间。通过这些函数,我们可以实现动态设置数组大小的功能。

c

#include

#include

int main() {

int initialSize = 5;

int *dynamicArray = (int *)malloc(initialSize * sizeof(int));

if (dynamicArray == NULL) {

fprintf(stderr, "内存分配失败%

");

return 1;

}

// 设置数组元素的值

for (int i = 0; i < initialSize; i++) {

dynamicArray[i] = i;

}

// 输出数组元素

printf("初始数组元素:");

for (int i = 0; i < initialSize; i++) {

printf("%d ", dynamicArray[i]);

}

// 动态调整数组大小

int newSize = 10;

dynamicArray = (int *)realloc(dynamicArray, newSize * sizeof(int));

if (dynamicArray == NULL) {

fprintf(stderr, "内存重新分配失败%

");

return 1;

}

// 设置新增元素的值

for (int i = initialSize; i < newSize; i++) {

dynamicArray[i] = i;

}

// 输出调整后的数组元素

printf("%

调整后的数组元素:");

for (int i = 0; i < newSize; i++) {

printf("%d ", dynamicArray[i]);

}

// 释放内存

free(dynamicArray);

return 0;

}

## 2. 通过结构体实现动态数组

除了使用动态内存分配函数外,我们还可以通过结构体来实现动态数组。结构体可以包含指向动态分配内存的指针,从而允许在运行时更改数组大小。

c

#include

#include

struct DynamicArray {

int *array;

int size;

};

void initializeArray(struct DynamicArray *dynArray, int initialSize) {

dynArray->array = (int *)malloc(initialSize * sizeof(int));

dynArray->size = initialSize;

}

void resizeArray(struct DynamicArray *dynArray, int newSize) {

dynArray->array = (int *)realloc(dynArray->array, newSize * sizeof(int));

dynArray->size = newSize;

}

void freeArray(struct DynamicArray *dynArray) {

free(dynArray->array);

}

int main() {

struct DynamicArray myArray;

// 初始化数组

initializeArray(&myArray, 5);

// 设置数组元素的值

for (int i = 0; i < myArray.size; i++) {

myArray.array[i] = i;

}

// 输出数组元素

printf("初始数组元素:");

for (int i = 0; i < myArray.size; i++) {

printf("%d ", myArray.array[i]);

}

// 调整数组大小

resizeArray(&myArray, 10);

// 设置新增元素的值

for (int i = myArray.size / 2; i < myArray.size; i++) {

myArray.array[i] = i;

}

// 输出调整后的数组元素

printf("%

调整后的数组元素:");

for (int i = 0; i < myArray.size; i++) {

printf("%d ", myArray.array[i]);

}

// 释放内存

freeArray(&myArray);

return 0;

}

通过以上两种方法,我们可以在C语言中实现动态设置数组大小的功能,使程序更加灵活和适应不同的需求。使用动态内存分配函数或结构体,可以在运行时根据实际情况调整数组的大小,提高程序的扩展性和效率。