gpt4 book ai didi

c - 从函数传递一 block 内存

转载 作者:太空宇宙 更新时间:2023-11-04 05:03:21 24 4
gpt4 key购买 nike

我正在尝试弄清楚如何在函数中分配一 block 内存并通过其中一个参数传回指向该 block 的指针。这是一个 C 程序。我似乎遇到了一些麻烦。这是代码:

void foo(char *ptr)
{
if (!(ptr = malloc(size)))
printf("error");

/* code here */

printf("buffer address: %i\n", (int)buffer);
}

int main()
{
char *ptr;
ptr = NULL;

foo(ptr);

printf("buffer address: %i\n", (int)buffer);
}

结果是:

buffer address: 142385160
buffer address: 0

但我期待的是:

buffer address: 142385160
buffer address: 142385160

我做错了什么?

最佳答案

其他人已经展示了将指针传递给指针,但您的问题表明了一个更简单的选项:

I'm trying to figure out how to allocate a block of memory in a function and return a pointer to that block.

(强调我的。)

当您考虑返回 某些东西时,请尝试将其用作返回值:)

char* foo()
{
char* ptr;
if (!(ptr = malloc(size)))
printf("error");

/* code here */

printf("buffer address: %i\n", (int)ptr);
return ptr;
}

(您也可以考虑返回 void* 而不是 char*)

如果由于某些其他原因您已经有了返回值,那么使用“指向指针的指针”方法可能是合适的 - 但如果您不使用原始值,只需返回一些东西,我相信如果可以的话,让事情变得简单是值得的。

关于c - 从函数传递一 block 内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1485756/

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