(C言語)const型修飾子

( 子の本棚にC言語入門の本が落ちてたので、勉強してみよっと )

 

【 実行プログラム 】

実行プログラム

 

【 ソースプログラム 】

#include  <stdio.h>

void set_zero(int v, int n)
{
    for (int i = 0; i < n; i++)
        v[i] = 0;
}

void print_array(const int v, int n)
{
    printf("{ ");
    for (int i = 0; i < n; i++)
        printf("%d ", v[i]);
    printf("}\n");
}

int main(void)
{
    int  ary1 = {1, 2, 3, 4, 5};
    int  ary2 = {3, 2, 1};

    printf("ary1 = ");  print_array(ary1, 5);
    printf("ary2 = ");  print_array(ary2, 3);

    set_zero(ary1, 5);
    set_zero(ary2, 3);

    printf("両配列の全要素に0を代入しました。\n");
    printf("ary1 = ");  print_array(ary1, 5);
    printf("ary2 = ");  print_array(ary2, 3);

    return (0);
}

 

【 まなび 】

■ const演算子

仮引数で受け取った配列の要素の値を読み取るだけで書き込ませないのであれば、その仮引数をconst付で宣言する・・・と安心!

 

例えば、const付で宣言されているにも関わらず、v[i] = 5; のような代入する記述があれば、

void print_array(const int v[], int n)
{
    printf("{ ");
    for (int i = 0; i < n; i++)
        v[i] = 5;
        printf("%d ", v[i]);
    printf("}\n");
}

次のようにエラーとなる。

 

 

■ set_zero(ary1, 3)なら・・・

 ary1 = { 0 0 0 4 5 } となる

 

 

constは、constantの略で、「定数の、値の変更ができない」って意味でした!