c语言中如何代中括号输入无固定数组
时间: 2024-09-22 19:01:46 浏览: 37
详细解析C语言中的sizeof.docx
在C语言中,通常我们定义数组需要指定其大小,因为数组是在编译时就确定长度的。如果需要处理不定长的元素集合,可以考虑使用动态内存分配的函数,如`malloc()`和`realloc()`, 来创建和管理数组。
例如,如果你想让用户输入元素并添加到数组中,直到用户停止输入,可以这样做:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100 // 初始化最大数组大小
int main() {
int *arr; // 定义一个整型指针指向动态数组
int count = 0; // 记录已输入的元素数量
arr = malloc(MAX_SIZE * sizeof(int)); // 动态分配初始容量
while (1) { // 循环读取用户输入
printf("请输入一个整数(输入-1结束):");
int input;
scanf("%d", &input);
if (input == -1)
break; // 用户输入-1表示结束
// 检查是否有足够的空间存储新元素
if (count >= MAX_SIZE) {
// 如果满了,先释放旧空间再扩大数组
free(arr); // 释放当前数组
count = 0; // 重置计数
arr = realloc(arr, (MAX_SIZE *= 2) * sizeof(int)); // 扩大数组
}
arr[count++] = input; // 将输入添加到数组中
}
// 使用完数组后记得释放内存
free(arr);
printf("你输入的数组是:\n");
for (int i = 0; i < count; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
在这个例子中,用户可以通过输入-1告知程序不再添加元素,程序会动态调整数组的大小以适应新的元素。但在实际应用中,这种做法可能会导致频繁的内存分配和释放,效率较低,适合于数据量不大且用户输入不会持续很长时间的情况。
阅读全文