问:用C语言写一个可变长度的数组功能。
ChatGPT:C语言中可以使用动态内存分配函数 malloc 和 realloc 来创建可变长度的数组。
以下是一个示例代码,展示如何使用 malloc 和 realloc 函数来创建和操作可变长度的数组:
#include
#include
int main() {
int size = 5;
int *arr = malloc(size * sizeof(int)); // 创建长度为 5 的数组
// 初始化数组
for (int i = 0; i < size; i++) {
arr[i] = i;
}
// 打印数组
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
// 增加数组长度
size = 10;
arr = realloc(arr, size * sizeof(int)); // 扩展数组长度为 10
// 初始化扩展部分的数组
for (int i = 5; i < size; i++) {
arr[i] = i;
}
// 打印数组
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
free(arr); // 释放内存
return 0;
}
该示例中,首先使用 malloc 函数创建长度为 5 的数组,并初始化数组。然后使用 realloc 函数将数组长度扩展为 10,并初始化扩展部分的数组。最后使用 free 函数释放内存。
注意:使用动态内存分配函数时,需要确保正确地管理内存,避免内存泄漏和越界访问等问题。
编者:很多年没写C语言程序了,如果真写的话,查阅资料和测试,估计我也要写一个小时。ChatGPT几秒钟就搞定了,虽然不能直接拿过来用,但实际拿过来稍为改吧改吧,也不多了。ChatGPT对程序猿来说是一把双刃剑,它让写代码门槛一下子拉低到了地平线,它暂时不能完全替代程序员,却可以大幅提高工作效率,进而裁掉低端生产力的程序员和高薪的程序员,对中端程序员反而可能是利好。