gpt4 book ai didi

将 int 指针转换为 void 指针并返回以在另一个函数中使用该值?

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

我想将一个 int 指针转换为一个 void 指针并将该 void 指针传递给一个函数,然后返回一个 int 指针以在另一个函数中使用该值。

void main(){
int newSize = size;
void *newSizePtr = &newSize;
someFunc(newSizePtr);
}

void someFunc(void *newSizePtr){
int actualValue = *((int *) newSizePtr);
}

这是将 int ptr 转换为 void ptr 然后返回使用该值的正确方法吗?

我无法动态分配内存给指针本身,因为我的程序限制我不能使用 malloc。即

int *newSize = malloc(sizeof(int));

这就是我这样做的原因。

我还需要传入一个 void* 参数,因为在我的程序中我使用的是 pthread_create()。这个函数需要我将 void* 的参数传递给函数,这就是为什么我将它转换为 void* 然后在我需要使用它时返回

最佳答案

C standard 明确允许您进行的转换.关于指针转换的第 6.3.2.3p1 节指出:

A pointer to void may be converted to or from a pointer to any object type. A pointer toa ny object type may be converted to a pointer to void and back again; the result shall compare equal to the original pointer.

也没有必要显式地转换为 void *。所以你可以这样做:

void someFunc(void *newSizePtr){
int *actualValuePtr = newSizePtr;
}

int main(){
int newSize = size;
pthread_t tid;
pthread_create(&tid, NULL, someFunc, &newSize);
}

关于将 int 指针转换为 void 指针并返回以在另一个函数中使用该值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58263191/

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