C言語は配列データ構造をサポートしており、同じ型の要素の固定サイズの連続したコレクションを格納します。配列は一連のデータを格納するために使用されますが、同じ型の一連の変数として考えられることもよくあります。
number0、number1、...、number99 のように個別の変数を宣言するのではなくnumber[0]、number[1]、...、number[99numbers[99]を使って個々の変数を表します。配列の特定の要素にはインデックスでアクセスできます。
すべての配列は連続したメモリー位置で構成されます。最も小さいアドレスが最初の要素に対応し、最も大きいアドレスが最後の要素に対応します。
配列の宣言
C言語で配列を宣言するには、以下のように要素の型と数を指定します:
int a[10];
配列の初期化
double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};
中括弧 { } で囲まれた値の数は、配列が宣言されたときに角括弧 [ ] で指定された要素の数より大きくすることはできません。
配列のサイズを省略した場合、配列のサイズは初期化時の要素数となります。したがって、もし
double balance[] = {1000.0, 2.0, 3.4, 7.0, 50.0};
配列要素へのアクセス
配列要素には、配列名+インデックスでアクセスできます。要素のインデックスは、配列名の後に角括弧で囲みます。例
double salary = balance[9].
C言語の配列
多次元配列。
1.次の文は、三次元の 5 . 10 . 4 整数配列: int threedim[5][10][4];
2.二次元配列
多次元配列の最も単純な形は2次元配列です。2次元配列は、要するに1次元配列のリストです。x行y列の2次元整数配列を次のように宣言します:
int array[2][3];/2 行 3 列
3.2次元配列の初期化
int a[3][4] = {
{0, 1, 2, 3} , /* インデックス0の行を初期化する */
{4, 5, 6, 7} , /* インデックス番号1の行を初期化する */
{8, 9, 10, 11} /* インデックス番号2の行を初期化する */
};
4.2次元配列要素へのアクセス
# nclude< stdio.h >
Int main ()
{
/* 5行2列の配列 */
int a[5][2] = { {0,0},{1,2},{2,4},{3,6},{4,8}};
int i,j;
/* 配列の各要素の値を出力する */
for ( i = 0; i < 5; i++ )
{
for ( j = 0; j < 2; j++ )
{
printf("a[%d][%d] = %d
", i,j, a[ i ][ j ] )
}
{
return 0;
}
上記のコードをコンパイルして実行すると、次のような結果が得られます:
関数への配列の渡し方
関数のパラメータとして1次元配列を渡す場合、次の3つの方法で関数の形式パラメータを宣言する必要があります。同様に、多次元配列を形式パラメータとして渡すこともできます。
モード1:形式パラメータはポインタ。
void myFunction(int *param){
// some code
}
モード 2: 正式なパラメータは、定義されたサイズの配列です:
void myFunction(int param[10] ){
// some code
}
モード 3: 正式なパラメータはサイズが未定義の配列です:
void myFunction(int param[ ] ){
// some code
}
関数から配列を返す
C言語では、完全な配列を関数の引数として返すことはできません。しかし、インデックスを指定せずに配列の名前を指定することで、配列へのポインタを返すことができます。
関数から1次元配列を返したい場合は、以下のようにポインタを返す関数を宣言する必要があります:
int * myFunction(int param[ ] ){
// some code
}
配列へのポインタ
配列名は、配列の最初の要素への定数ポインタです。
balanceは、配列balanceの最初の要素のアドレスである&balance[0]へのポインタです。したがって、次のプログラムでは、balanceの最初の要素のアドレスにpを代入します:
double *p;
double balance[10];
p = balance;
配列名を定数ポインタとして使用することは合法であり、その逆も同様です。従って、*はbalance[4]データにアクセスする合法的な方法です。
記事のメリット
C/C++の学習を簡単かつ効率的にするために、最も基本的なものから、いばらの道を通るC/C++の学習に役立つ学習リソースを共有します!
初心者のためのC/C++学習教材
無料のC/C++学習教材を入手するには、ここをクリックしてください!
VSコンパイラ、グラフィックライブラリ





