わかりましたので、私はcの構造体にまったく慣れていません。私には非常に奇妙に思える問題があります。
ポインターを使用して単純な構造体を関数に渡すと、構造体はその関数の他の引数の 1 つを新しいデータとして自動的に受け取ります。なぜこれが起こるのかわかりません..現時点では、 move_walker() は何もしないはずですよね?
typedef struct {
int x,
y;
} walker_t;
walker_t* init_walker(int x, int y) {
walker_t walker;
walker.x = x;
walker.y = y;
walker_t *pointer = malloc(sizeof(walker));
pointer = &walker;
return pointer;
}
int move_walker(walker_t * walker, int direction) {
return 0;
}
walker_t* walker;
walker = init_walker(8,2);
printf("%d %d\n", walker->x, walker->y); //will print '8 2'
move_walker(walker, 3);
printf("%d %d\n", walker->x, walker->y); //will print '0 3'
(問題ではないことは確かですが、このコードは実際には複数のファイルに分散されています。)