所以我明白了:
typedef struct {
int score;
char init;
} Student;
int changestuff(Student *students) {
students->score = 100;
students++;
students->score = 200;
changestuffagain(students);
}
int changestuffagain(Student *students) {
students->score = 100;
students++;
students->score = 200;
}
int main() {
Student students[2];
changestuff(students);
}
我调用函数changestuff并且它正确地修改了玩家[0]和玩家[1]的社交,但是我的小问题是,当我调用第二个函数changestuffagain时,参数不会传递玩家[0]和玩家[1],它只传递玩家[1](在调用changestuff的时刻玩家的价值)
我如何解决这个问题?
答案 0 :(得分:2)
嗯,这就是你告诉它的事情。当您的changestuff
函数调用changestuffagain
时,您增加了students
的值,因此它现在指向数组中的第二个Student
。如果要将指针保持在同一位置,则应传递未递增的值。
答案 1 :(得分:1)
当你致电students++
时,你会跳到下一个记忆位置,在那里分配一个Student
(在你的情况下是students[1]
)。在拨打students
之前,您可以减少changestuffagain()
。
例如:
students--;
changestuffagain(students);