gpt4 book ai didi

C - 返回指针的函数,如何编写高效的代码?

转载 作者:行者123 更新时间:2023-12-02 04:57:53 26 4
gpt4 key购买 nike

如果我有一个任意定义的函数,比如:

char* myfunction(int, int[]);

如图所示,它返回一个字符指针。您是否必须在调用函数中编写如下内容:

char *ptr = myfunction( ... ); 

或者有没有一种方法可以使用函数返回的指针而不创建另一个指向返回指针的指针?

我问是因为,根据我上面的描述,您基本上返回了一个指针,并为该指针分配了另一个指针。因此,您将有一个未使用的指针(由函数返回的指针)占用内存。

如果没有办法显式使用返回的指针,有没有办法为返回的指针分配一个新指针并释放未使用的指针?

最佳答案

指针是一个非常小的东西。它只是对象地址的表示。您不应该担心创建指针的额外副本(这就像创建一个额外的 int)。

char* foo() { 
char* bar;
// some stuff that mallocs a value and assigns to bar
return bar;
}

char* x = foo();

在上面的简化示例中,bar 指针是在堆栈上创建的,注释中的代码将其指向堆中的某个内存(使用 Malloc 或其他东西)。当计算函数 foo() 时,指针的值(例如内存地址)从堆栈弹出并分配给 x。周围没有未使用的指针,它只是被重新分配了。它指向的内存完全保留在原处并且​​不会重复。

您并没有为指针指向的内存创建额外的副本。事实上,这是优先使用指针的一个重要原因,因为它涉及更少的复制。

关于C - 返回指针的函数,如何编写高效的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17633921/

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