11.構造体

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
└────┘

このへんポインタに慣れてないと理解が難しいかもしれませんが、どんなプログラムもこれの積み上げのようなものです。