📜  c中的浮动数组 (1)

📅  最后修改于: 2023-12-03 15:14:25.285000             🧑  作者: Mango

C中的浮动数组

在C语言中,数组是一种非常常用的数据类型,它可以通过下标来访问数组中的元素。而浮动数组是一种特殊的数组,它的长度是在运行时确定的。

声明浮动数组

与声明常规数组相似,声明浮动数组也是通过指定数组名称和元素类型来实现的。不同之处在于,浮动数组的长度是通过变量来指定的,而不是通过常量:

int n;
scanf("%d", &n);
int arr[n];

在上面的例子中,我们声明了一个整型的浮动数组arr,并通过scanf()函数从用户处输入了n来确定数组的长度。这就是浮动数组最大的特点,它可以在运行时根据不同的条件来动态地分配内存。

初始化浮动数组

与常规数组相似,我们也可以通过初始化来给浮动数组赋值。初始化时,我们需要事先知道数组的长度以及每个元素的值:

int n;
scanf("%d", &n);
int arr[n] = {1, 2, 3, 4, 5};

在上述代码中,我们初始化了一个长度为n的浮动数组arr,并把前五个元素分别赋值为12345

访问浮动数组

访问浮动数组的方式与常规数组相同,都是通过下标来访问。例如,arr[i]用于获取索引为i的元素。需要注意的是,由于浮动数组的长度是在运行时确定的,因此我们不能访问数组的越界元素,否则会发生未知的错误。

int n;
scanf("%d", &n);
int arr[n] = {1, 2, 3, 4, 5};
for(int i = 0; i < n; i++) {
    printf("%d ", arr[i]);
}

在上述代码中,我们使用了一个简单的for循环来遍历浮动数组arr中的所有元素,并通过printf()函数将它们打印出来。

动态调整浮动数组长度

由于浮动数组的长度是在运行时确定的,我们也可以动态地调整数组的长度。为此,我们可以使用realloc()函数来重新分配内存。该函数有两个参数,第一个是需要重新分配内存的对象指针,第二个是新的内存大小。

int n = 5;
int* arr = malloc(n * sizeof(int)); // 分配初始内存空间
for(int i = 0; i < n; i++) {
    arr[i] = i + 1;
}
n = 10; // 将数组长度增加至10
arr = realloc(arr, n * sizeof(int)); // 重新分配内存
for(int i = 5; i < n; i++) {
    arr[i] = i + 1;
}
for(int i = 0; i < n; i++) {
    printf("%d ", arr[i]);
}
free(arr); // 释放内存空间

在上述代码中,我们首先使用malloc()函数分配了一个初始长度为n的内存空间,并将其中的元素依次赋值为15。随后,我们将数组长度增加至10,并再次使用realloc()函数重新分配内存。最后,我们遍历新分配的内存空间,并通过printf()函数将其依次打印出来。最后,我们使用free()函数释放内存空间。

总结

浮动数组是一种灵活性很高的数据类型,它可以在运行时动态地分配内存空间。在使用浮动数组时,需要注意数组越界的情况,并且需要及时地对不再使用的内存空间进行释放。