struct作为连续函数的参数......小错误需要修复。 (C)

时间:2013-11-24 16:18:56

标签: c pointers struct

所以我明白了:

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的时刻玩家的价值)

我如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

嗯,这就是你告诉它的事情。当您的changestuff函数调用changestuffagain时,您增加了students的值,因此它现在指向数组中的第二个Student。如果要将指针保持在同一位置,则应传递未递增的值。

答案 1 :(得分:1)

当你致电students++时,你会跳到下一个记忆位置,在那里分配一个Student(在你的情况下是students[1])。在拨打students之前,您可以减少changestuffagain()

例如:

students--;
changestuffagain(students);