gpt4 book ai didi

c - 如何将结构体指针传递给函数?

转载 作者:行者123 更新时间:2023-11-30 18:54:09 24 4
gpt4 key购买 nike

我正在 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() 函数即可。

此外,还有一个函数原型(prototype)

 void calculateCoords(struct coords* myCoords)

调用

 calculateCoords(&myCoords);

from doStuff() 是错误的,因为它传递的是 struct coords**

解决方案:

保持 calculateCoords() 的函数签名不变,只需将调用更改为

  calculateCoords(myCoords);

然后,通过 calculateCoords 中的 myCoords 对任何成员变量所做的任何更改都将反射(reflect)在 main( )

关于c - 如何将结构体指针传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30853816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com