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 ├┐││
↑↑↑ └────┘ └────┘↓↓↓
││└────────←───────┘││
│└─────────←────────┘│
└──────────←─────────┘
単純にこんな感じです。処理能力的には一番遅くてメモリの無駄も多いでしょう