我正在阅读有关指针到指针的内容,现在我想我知道的比以前少了。 需要传递双指针来更改该指针的值。但是,如果我们有一个指向某个结构的指针,并且我们想要更改其某些成员(字段)的值,那么我们必须传递一个简单的指针。前面的说法正确吗?
例如:
struct A* a;
void func(struct A* arg)
{
arg->mem1 = 5;
}
和
struct *A a;
void func(struct A** arg)
{
*arg = malloc(struct A);
(*arg)->mem1 = 5;
return;
}
我希望上面的例子能够清楚地说明问题。
最佳答案
是的,你说得对。您只需传递一个指向结构体的指针
即可更改结构体变量内的字段。这是因为您没有更改地址,而是更改了指针指向的结构 var 中存储的值。
如果您需要分配内存或更改指针指向的地址,并且需要在调用函数中反射(reflect)出来,那么您的第二个函数就可以了。
关于C 在函数中传递指针到指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35103931/