gpt4 book ai didi

改变函数中的指针,c

转载 作者:太空狗 更新时间:2023-10-29 16:03:45 24 4
gpt4 key购买 nike

我会提前说明我问的是指向指针的指针,所以我的话可能有点含糊,但请记住我:)

我试图了解更改作为参数传递的指针如何在函数范围之外生效。到目前为止,这是我的理解:如果将指针作为参数传递给函数,我只能更改指针指向的内容,而不能更改指针本身(我说的是将在范围外生效的更改功能,正如我所说)。如果我想更改指针指向的内容,我必须将指针传递给指针。

到目前为止我是对的吗?另外,我注意到当我有一个包含一些指针的结构时,如果我想初始化这些指针,我必须将 struct 作为指向指针的指针传递给初始化函数。这是出于同样的原因吗?

最佳答案

你在第一位是正确的,但如果你已经分配了结构,那么你可以传递一个指向它的指针。但是,如果函数分配了结构,那么要么使用函数返回来收集新分配的结构的值,要么传入一个指向参数列表中的指针的指针。

(我没有手头的 c 编译器,但我已经尝试编写一些示例)。

  • 你已经分配了指针
    int main() {       struct x *px = malloc(...);       initx(px);     }    void intix(struct x* px){        px-> ....    } 
  • 分配指针的函数
     int main() {       struct x *px = initx();      }     struct x* intix(){        struct x *px = malloc(...);        px-> ....        return px;     } 
  • 分配指针的函数
     int main() {       struct x *px;       initx(&px);      }     void intix(struct x** ppx){        struct x *px = malloc(...);        px-> ....        *ppx = px;     } 

关于改变函数中的指针,c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7545326/

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