[C言語]構造体を関数に渡すとコピー(値渡しになる)

C言語では、構造体を関数に渡すとコピー(値渡し)になります。
#include <stdio.h>

struct POINT {
    int x;
    int y;
};

void func(struct POINT);
main()
{
    struct POINT a = {10,20};
    printf("a = {%d, %d}\n", a.x, a.y);
    
    //構造体aを渡す(値渡し。非破壊的。)
    func(a);

    //変数aは変化を被らない
    printf("a = {%d, %d}\n", a.x, a.y);
}

void func(struct POINT s)
{
    //構造体sはaのクローンなので、
    //ここでの操作は変数aに対して変化を及ぼさない
    s.x = 22;
    s.y = 33;
    
    printf("s = {%d, %d}\n", s.x, s.y);
}
実行結果
a = {10, 20}
s = {22, 33}
a = {10, 20}
カテゴリ:

人気記事