好的,所以我对 c 中的结构完全陌生,而且我遇到了一个对我来说似乎很奇怪的问题。
当使用它的指针将简单结构传递给函数时,该结构会自动采用该函数的其他参数之一,因为它是新数据。我不知道为什么会发生这种情况。。此时 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'
(我很确定这无关紧要,但这段代码实际上分布在多个文件中。)