我在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;
}
答案 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);
}
个对象,而不是指针。