c语言根据输入值确定数组大小,用多种方法实现
时间: 2024-09-28 10:16:39 浏览: 38
在C语言中,根据用户输入动态确定数组大小可以使用几种常见的方法:
1. **使用malloc()函数**:
```c
int n; // 用户输入的大小
printf("请输入数组的大小: ");
scanf("%d", &n);
int* arr = malloc(n * sizeof(int)); // 动态分配内存
if (arr) {
// 使用数组...
free(arr); // 使用完毕后记得释放内存
} else {
printf("内存分配失败!\n");
}
```
2. **使用动态数组(VLA - Variable Length Array)在C99及以上版本**:
如果你的编译器支持C99标准,可以直接声明:
```c
#if __STDC_VERSION__ >= 199901L
int n;
printf("请输入数组的大小: ");
scanf("%d", &n);
int arr[n]; // C99及以后版本可用
#else
... // 对于不支持VLA的编译器,需要其他方式如malloc
#endif
```
3. **使用动态存储向量(如vector库)**:
若你在使用C++,可以利用`std::vector`:
```cpp
#include <iostream>
#include <vector>
std::vector<int> arr;
int n;
std::cout << "请输入数组的大小: ";
std::cin >> n;
arr.resize(n);
```
4. **结构化异常处理(仅限GCC等支持)**:
```c
int n;
printf("请输入数组的大小: ");
scanf("%d", &n);
try {
int* arr = new int[n];
// 使用数组...
delete[] arr;
} catch (...) {
std::cerr << "内存分配失败!\n";
}
```
每种方法都有其适用场景,选择取决于项目需求、目标平台和可用的C/C++版本。
阅读全文