C言語 ポインタと配列(1) | 53歳からの挑戦、プログラミング、英会話、筋トレ

53歳からの挑戦、プログラミング、英会話、筋トレ

若者のすなるプログラミングというものを50歳の私もしてみんとてするなり
とりあえず、C言語から始めます。

1. 配列名が先頭アドレス

    abc[10]があったとすると

    abcは配列abcの先頭アドレスを示すんだよね。

 

    でね、*abc+iとすることでabc[i]を指示してるんだね。アドレス計算っていうんだってね。

    &abc[0] と  abcは同じ意味だね。(どっちもabc[10]の先頭アドレス)

 

2. 配列を関数間で受け渡すとき

    関数間で受け渡すときは、配列の先頭アドレスを受け渡すんだよね。

  main関数内で

       kannsuu(abc);

 

    void kansuu(int *p){

    int i;

    for(i=0;i<3;i++){

        printf("%d",*(p+i));

    }

 

    だけどの配列の大きさ(サイズ)も一緒に引数として渡さないと困ることがあるかもね

    サイズの計算はsizeofでできるよ。

  sizeof(abc)で配列abc全体の大きさ

  sizeof(abc[0])で配列のレコードの大きさ

  で、割り算して配列の要素数を出してるんだね。

 

    main内

       int size= sizeof(abc)/sizeof(abc[0]);

     kannsuu(abc,size);

   

    main外

           void kansuu(int *p,int size){

           int i;

          for(i=0;i<3;i++){

              printf("%d",*(p+i));

          }

 

3. 引数が変更されないようにするためには

    仮引数にconstを付ける、これで変更はできませんよ~と言う話。

  

           void kansuu(const int *p,int size){

           int i;

          for(i=0;i<3;i++){

              printf("%d",*(p+i));

          }