1、编写函数构建一个可自定义下标范围的动态一维数组。在main函数中给出下标范围(例如:由n到m),并调用此函数完成数组的构建。C语言
时间: 2024-12-24 15:38:33 浏览: 4
在C语言中,由于其语言特性,动态数组通常是通过指针和内存分配来实现的。这里我们可以创建一个函数`custom_array`,该函数接受两个整数参数n和m,然后返回一个新的动态数组,该数组可以存储从n到m的值。但是请注意,C语言的标准库并不提供直接的动态数组支持,所以我们需要自己管理内存。以下是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 动态数组结构体
typedef struct {
int* arr;
size_t capacity;
} DynamicArray;
// 动态数组初始化
DynamicArray* create_custom_array(int start, int end) {
if (start > end) {
printf("Error: Start index cannot be greater than end index.\n");
return NULL;
}
// 计算需要的元素个数
size_t size = end - start + 1;
// 动态分配内存
DynamicArray* array = (DynamicArray*)malloc(sizeof(DynamicArray));
if (!array) {
perror("Memory allocation failed");
exit(1);
}
// 初始化数组
array->arr = (int*)malloc(size * sizeof(int));
if (!array->arr) {
free(array);
perror("Memory allocation for elements failed");
exit(1);
}
for (size_t i = 0; i < size; ++i) {
array->arr[i] = start + i; // 设置数组值
}
array->capacity = size;
return array;
}
// 主函数示例
int main() {
int n, m;
printf("Enter the range from n to m (inclusive): ");
scanf("%d %d", &n, &m);
DynamicArray* customArr = create_custom_array(n, m);
// 检查是否成功创建
if (customArr != NULL) {
for (size_t i = 0; i < customArr->capacity; ++i) {
printf("%d ", customArr->arr[i]);
}
printf("\n");
// 清理内存
free(customArr->arr);
free(customArr);
} else {
printf("Failed to create custom array.\n");
}
return 0;
}
阅读全文