11.構造体

11-14. 構造体型の関数

◇構造体型の関数

今度は、呼び出す関数そのものを構造体型にします。この利点は return で構造体そのものを返す事ができる点です。

#include<stdio.h>

struct st_samp{
    int x;
    int y;
    int z;
};

struct st_samp output(struct st_samp st);

main()
{

    struct st_samp s1={2,3,0};

    s1 = output(s1);

    printf("%d * %d = %d\n",s1.x,s1.y,s1.z);
    return;
}

struct st_samp output(struct st_samp st)
{
    st.z = st.x * st.y;
    return st;
}

/* 結果
2 * 3 = 6
*/

main() output()
s1 st
┌────┐ ┌────┐
┌──→│s1.x ├──→│st.x ├──┐
│ ├────┤ ├────┤ │
│┌─→│s1.y ├──→│st.y ├─┐│
││ ├────┤ ├────┤ ││
││┌→│s1.z ├──→│st.z ├┐││
↑↑↑ └────┘ └────┘↓↓↓
││└────────←───────┘││
│└─────────←────────┘│
└──────────←─────────┘

単純にこんな感じです。処理能力的には一番遅くてメモリの無駄も多いでしょう