C 在函数中传递指针到指针

标签 c pointers

我正在阅读有关指针到指针的内容,现在我想我知道的比以前少了。 需要传递双指针来更改该指针的值。但是,如果我们有一个指向某个结构的指针,并且我们想要更改其某些成员(字段)的值,那么我们必须传递一个简单的指针。前面的说法正确吗?

例如:

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/

相关文章:

C 中数组大小的混淆

c - 这是使用内存映射来存储大量数据的有效方法吗?

c++ - Glibc 在调用新关键字 C++ 时检测到 malloc() 内存损坏 (0xb6179bb8)

c++ - 是否有任何理由在 C 中声明 "volatile const"而在 C++ 中仅声明 "volatile"?

c++ - 在 C++ 中没有类的情况下从 main() 访问函数内部的静态变量

c - 为什么即使我得到了正确的结果,程序还是崩溃了?

c++ - 如何从 C++ 中的整数缓冲区中提取 4 个字节的整数

C:我的反向字符串函数有什么问题?

list - 如何更新 go 列表中的下一个指针?

c++ - 使用指针和结构复制类的构造函数