C - 调整指针数组的大小

作者:编程家 分类: arrays 时间:2025-05-19

调整指针数组大小的方法

在C语言中,动态调整数组大小是一个常见的需求,尤其是当涉及到指针数组时。指针数组是一种数组,其元素为指针,每个指针指向内存中的一个数据。当需要改变指针数组的大小时,可以通过动态内存分配和重新分配来实现。本文将介绍如何在C语言中调整指针数组的大小,并提供相应的案例代码。

### 分配新内存并拷贝原数据

要调整指针数组的大小,首先需要分配新的内存空间,然后将原数组中的数据拷贝到新分配的内存中。这个过程可以通过以下步骤完成:

1. 使用 `malloc()` 函数分配新的内存空间。

2. 将原数组中的数据逐个拷贝到新分配的内存空间。

3. 释放原数组占用的内存空间。

4. 更新指针数组以指向新分配的内存。

下面是一个示例代码,演示了如何实现调整指针数组大小的过程:

c

#include

#include

// 函数:调整指针数组大小

void resizeArray(char *array, int newSize) {

// 分配新的内存空间

char temp = (char )malloc(newSize * sizeof(char *));

if (temp == NULL) {

printf("内存分配失败%

");

return;

}

// 拷贝原数组数据到新分配的内存

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

if (i < (*arraySize)) {

temp[i] = (*array)[i];

} else {

temp[i] = NULL;

}

}

// 释放原数组占用的内存空间

free(*array);

// 更新指针数组以指向新分配的内存

*array = temp;

}

int main() {

char *initialArray[] = {"Apple", "Orange", "Banana"};

int initialSize = sizeof(initialArray) / sizeof(initialArray[0]);

char pointerArray = initialArray;

printf("原始数组内容:%

");

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

printf("%s ", pointerArray[i]);

}

printf("%

");

int newSize = 5; // 新的数组大小

resizeArray(&pointerArray, newSize);

printf("调整大小后的数组内容:%

");

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

if (pointerArray[i] != NULL) {

printf("%s ", pointerArray[i]);

} else {

printf("NULL ");

}

}

printf("%

");

return 0;

}

以上示例代码演示了如何使用 `resizeArray` 函数调整指针数组的大小,并在主函数中展示了调整大小前后的数组内容输出。这个例子仅仅是一个演示,实际应用中可能需要根据具体情况做出相应修改。