11-13. 構造体へのポインタ引数
◇構造体へのポインタ引数
#include<stdio.h> struct st_samp{ int x; int y; int z; }; void output(struct st_samp *p_st); main() { struct st_samp s1={2,3,0}; output(&s1); printf("%d * %d = %d\n",s1.x,s1.y,s1.z); return; } void output(struct st_samp *p_st) { p_st->z = p_st->x * p_st->y; return; } /* 結果 2 * 3 = 6 */
結果はお馴染みのものですね、多分、この使い方が一番多いのではないかと思います。
main() s1のアドレス output()
┌──────┐
s1 │ ↓ p_st
┌────┐p_st->x ┌────┐
│s1.x │←┬──┤ &s1 │
├────┤ │ └────┘
│s1.y │←┤p_st->y
├────┤ │
│s1.z │←┘p_st->z
└────┘
このへんポインタに慣れてないと理解が難しいかもしれませんが、どんなプログラムもこれの積み上げのようなものです。