📅  最后修改于: 2023-12-03 15:14:25.285000             🧑  作者: Mango
在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
,并把前五个元素分别赋值为1
、2
、3
、4
和5
。
访问浮动数组的方式与常规数组相同,都是通过下标来访问。例如,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
的内存空间,并将其中的元素依次赋值为1
至5
。随后,我们将数组长度增加至10
,并再次使用realloc()
函数重新分配内存。最后,我们遍历新分配的内存空间,并通过printf()
函数将其依次打印出来。最后,我们使用free()
函数释放内存空间。
浮动数组是一种灵活性很高的数据类型,它可以在运行时动态地分配内存空间。在使用浮动数组时,需要注意数组越界的情况,并且需要及时地对不再使用的内存空间进行释放。