[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}
カテゴリ:
C