gpt4 book ai didi

c - 从图书馆给出指针

转载 作者:行者123 更新时间:2023-11-30 15:14:08 25 4
gpt4 key购买 nike

我有一个大问题。我编写了一个静态库,我想在软件中使用它。我的问题是:如果您将库外函数的指针返回给主程序,则该指针没有库中指针的值。如果您将指针从 Libay.a 返回到 main.c,是否有问题

主.c:

#include <stdio.h>

int main(int argc, const char * argv[]) {

char *ptr;
Prallow_its(ptr, 122);
printf("%s", ptr);
return 0;

}

Prallow.c 来自 Prallow.a

[...]

char *Prallow_its(char *ptr, int i){
static char buffer[255];
sprintf(buffer, "%u", i);
ptr = buffer;
return ptr;
}

[...]

最佳答案

可以从库中返回指向静态缓冲区的指针。它与程序的其余部分位于相同的地址空间中。当然,它不是线程安全的,但这是一个单独的问题。

真正的问题是你调用它的方式:

char *ptr;               // <-- ptr uninitialised
Prallow_its(ptr, 122); // <-- return value ignored
printf("%c", ptr); // <-- ptr still uninitialised

你应该这样做:

ptr = Prallow_its( ptr, 122 );

或者,您可以允许 Prallow_its 修改 ptr。在这种情况下,它必须这样定义:

char *Prallow_its( char **ptr, int i )
{
static char buffer[255];
sprintf(buffer, "%u", i);
*ptr = buffer;
return *ptr;
}

并这样调用:

Prallow_its( &ptr, 122 );

关于c - 从图书馆给出指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34166101/

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