在C語言中,數組的長度是在數組定義時確定的,無法在運行時動態定義數組的長度。要自定義數組的長度,可以使用指針和動態內存分配來實現。
一種方法是使用malloc
函數動態分配內存,然后將返回的指針賦值給數組指針變量。示例代碼如下:
#include <stdio.h>
#include <stdlib.h>
int main() {
int n;
printf("請輸入數組長度: ");
scanf("%d", &n);
// 動態分配內存
int* arr = (int*)malloc(n * sizeof(int));
// 使用數組
for (int i = 0; i < n; i++) {
arr[i] = i + 1;
}
// 打印數組
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
// 釋放內存
free(arr);
return 0;
}
另一種方法是使用可變長度數組(Variable Length Array,VLA),這是C99標準引入的特性。示例代碼如下:
#include <stdio.h>
int main() {
int n;
printf("請輸入數組長度: ");
scanf("%d", &n);
// 定義可變長度數組
int arr[n];
// 使用數組
for (int i = 0; i < n; i++) {
arr[i] = i + 1;
}
// 打印數組
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
需要注意的是,使用可變長度數組時,數組長度必須是一個變量,而不是一個固定的常量。并且,可變長度數組的內存是在棧上分配的,而不是堆上。因此,如果數組長度過大,可能會導致棧溢出的問題。