[英]How to implicitly pass a *this pointer to a function pointer in struct
[英]How to pass pointer to struct to a function?
我正在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;
}
在doStuff()
函數內部, myCoords
已經是一個指針。 您可以簡單地將該指針本身傳遞給calculateCoords()
和calculateMotorSpeeds()
函數。
還有,像這樣的函數原型
void calculateCoords(struct coords* myCoords)
呼喚
calculateCoords(&myCoords);
來自doStuff()
是錯誤的,因為它正在傳遞struct coords**
。
解:
保持您的函數簽名不變,以保持calculateCoords()
完整性,只需更改對
calculateCoords(myCoords);
然后,通過對任何成員變量所作的任何更改myCoords
內部calculateCoords
將反映在myCoords
在main()
doStuff
已經有一個指向您的struct coords
對象的指針。 它無需執行任何操作即可將該指針傳遞給其他函數。 因此,您可以像這樣定義doStuff
:
void doStuff(struct coords* myCoords)
{
calculateCoords(&myCoords);
calculateMotorSpeeds(&myCoords);
}
之所以需要將&myCoords
傳遞給main
對doStuff
的調用,是因為在那里,名稱myCoords
指的是struct coords
對象,而不是指針。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.