プログラミング+α学習ブログ

勉強したことの備忘録です。

配列の全ての要素に同じ値を代入する関数

#include <stdio.h>

#define NUMBER 5    // 配列の要素数

/*--- 要素数noの配列vcの全要素にxを代入 ---*/
void fill(int vc[], int no, int x)
{
    int i;
    
    for (i = 0; i < no; i++)
        vc[i] = x;
}

int main(void)
{
    int i;
    int x[NUMBER] = {5, 4, 3, 2, 1};
    
    fill(x, NUMBER, 2);
    
    for (i = 0; i < NUMBER; i++)
        printf("x[%d] = %d\n", i, x[i]);
    
    return (0);
}

実行結果

x[0] = 2
x[1] = 2
x[2] = 2
x[3] = 2
x[4] = 2

配列の受け渡し

void fill(int vc[], int no, int x)

上記は、下記のように書き換えても良い。

void fill(int *vc, int no, int x)

これは、配列をvcに、その要素数をnoに受け取るという意味の関数である。
このfill関数を呼び出す際は下記のように配列の名前だけを書いたものを与える。

fill(x, NUMBER, 2);

このように、関数に対して配列を渡すと、受け取った側では配列の要素の値を書き換えることができてしまうという問題が発生する。
それを解決するのがconst型修飾子である。
これについては別記事に。