シェアする

  • このエントリーをはてなブックマークに追加

C言語 ポインタが理解できない理由 – 引数を構造体で渡してみる

シェアする

  • このエントリーをはてなブックマークに追加
  • 1

C言語 ポインタが理解できない理由 – 引数を構造体で渡してみるこんにちは、じゅんです。

C言語 ポインタが理解できない理由のマインドマップ

今日は引数のポインタ渡し『構造体』編をお送りします。

引数を構造体のポインタで渡すととっても便利

今回の解説では『ポインタ』の説明が主になりますので、『構造体』がどういうものかまでは説明しません。

『構造体』について勉強したい方は他の書籍なり、ブログを参考にして頂くようお願いします。

    1. プログラム
    2. メモリの使われ方
    3. 型とポインタ
    4. 配列とポインタ
    5. 文字列とポインタ
    6. mallocとポインタ
    7. 関数とポインタ
    8. 構造体とポインタ

今日は第8章の部分を説明します。

struct meibo{

char *name;

char *address;

int male_female;

・・・

};

void name_in(struct meibo *meibo_b)

{

meibo_b –> name = strdup(“じゅん”);

return;

}

int main(void){

struct meibo *meibo_a;

name_in(meibo_a);

return 0;

}

ここで “strdup” は “string.h” にある標準関数で、引数がNULLでないかをチェックし、NULLでなければmallocでメモリを確保し、”strcpy” で文字列をコピーする、というものです。

なお、構造体のデータを指し示すポインタは、ドット(.)ではなく、アロー(->)によってアクセスします。

こうやって、構造体内の他の変数もポインタによって別関数内でガンガン扱えるようになる訳ですね。

明日は関数ポインタについて説明する予定です。