iPhone/iPadアプリ開発逆引き大全500の極意

プログラミングの基礎 - Tips185 構造体を返す関数を

登録タグ
iOS
Icon comment count 0
Icon stock count 0

3-9構造体Tips185 構造体を返す関数を

Level2

Point構造体を返す関数の作成

関数では、構造体のポインターを返すことができます。クラスのメソッドと同じように、関数内でメモリを取得して構造体の内容を作成したり、変更したりすることができます。

●ポインターを返す関数

構造体を関数の戻り値にする場合は、関数の内部でmalloc関数を使ってメモリを確保します。

構造体名 *関数名( ... )
{
  構造体名 *変数名 =
    (構造体名*)malloc(sizeof(構造体名));
  ……(中略)……
  return 変数名;
}

内部変数を戻り値にしてしまうと、関数のスコープから抜けたときにメモリが解放される(スタックが解放される)ため、不正なメモリにアクセスしてしまいます。

●構造体のコピーを返す関数

以下のように構造体そのものを戻り値にした場合は、構造体の内容のコピーが返されます。

構造体名 関数名( ... )
{
  構造体名 変数名;
  ……(中略)……
  return 変数名;
}

出典情報

Medium

iPhone/iPadアプリ開発逆引き大全500の極意

  • 著者: 増田 智昭, 池谷 京子

コメント

    コメントはありません