如何将指向struct的指针传递给函数?

时间:2015-06-15 19:51:51

标签: c function pointers struct

我在main()函数中实例化结构,并且我将指向此结构的指针传递给函数。我想把这个指针传递给另一个函数的原始结构,我该怎么做?

我现在迷失了指针。

struct coords {
    int x;
    int y;
}

// Main loop, instantiated the struct
int main(void)
{
    struct coords myCoords;
    while(1) {
        doStuff(&myCoords);
    }
}

// Calculate Coords and update them via pointer to struct
// I want to be able to edit myCoords within calculateCoords
void doStuff(struct coords* myCoords)
{
    calculateCoords(&myCoords);

    calculateMotorSpeeds(&myCoords);
}

// I want to be able to edit myCoords within here!
void calculateCoords(struct coords* myCoords)
{
    myCoords->x = 100;
}

2 个答案:

答案 0 :(得分:1)

doStuff()函数中,myCoords已经是指针。您只需将指针本身传递给calculateCoords()calculateMotorSpeeds()函数。

另外,使用像

这样的函数原型
 void calculateCoords(struct coords* myCoords)

致电

 calculateCoords(&myCoords);
来自doStuff()

错误,因为它正在传递struct coords**

<强>解决方案:

保持calculateCoords()的功能签名不变,只需按下

  calculateCoords(myCoords);

然后,通过myCoords中的calculateCoords对任何成员变量所做的任何更改都会反映在myCoords的{​​{1}}中。

答案 1 :(得分:1)

struct coords已经有一个指向doStuff对象的指针。为了将指针传递给其他函数,它不需要做任何事情。所以你可以像这样定义void doStuff(struct coords* myCoords) { calculateCoords(&myCoords); calculateMotorSpeeds(&myCoords); }

&myCoords

您需要将doStuff传递给main中对myCoords的调用的原因是,名称struct coords引用了var dates = []; getDateRange(); function getDateRange() { var today = new Date(); var date; for (var i = 0; i <= 59; i++) { date = new Date(); date.setDate(today.getDate() + i); console.log(date); dates.push(date); }; console.log(dates); }个对象,而不是指针。