C言語で配列の長さをカスタマイズする方法は何ですか?
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;
}
可変長配列を使用する際に注意すべき点は、配列の長さが定数ではなく変数である必要があることです。また、可変長配列のメモリはスタック上に割り当てられるため、長さが大きすぎるとスタックオーバーフローの問題が発生する可能性があります。