gpt4 book ai didi

c - 指针到指针类型转换的目的是什么?

转载 作者:行者123 更新时间:2023-11-30 20:41:05 25 4
gpt4 key购买 nike

我看到了一段分配内存池的代码。代码块中的一行表示

*(char**) block = nextblock;

任何人都可以帮助将 char* block 类型转换为 *(char**) 的目的是什么?

最佳答案

除了代码可读性之外,我想不出为什么要进行这种类型转换的原因。

取消引用 void** 指针是允许的,甚至不会被我的 gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-52) 所反对,使用 gcc -pedantic dereferencetest.c

调用
struct StructTest {
char* ptr;
};

int main(void)
{
char* str = strdup("test");
char** ptr = &str;
void** vptr = ptr; // warning here
char* strRecycled = *vptr; // no warning on dereferencing

printf("str=[%s]", strRecycled);


{
struct StructTest val;
struct StructTest* structPtr = &val;
struct StructTest** structPtrPtr = &structPtr;

vptr = structPtrPtr; // warning here
structPtr = *vptr; // no warning on dereferencing
}


return 0;
}

有关于无效指针类型分配和初始化的警告,但没有取消引用警告。

dereferencetest.c:9: warning: initialization from incompatible pointer type
dereferencetest.c:20: warning: assignment from incompatible pointer type

关于c - 指针到指针类型转换的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18633585/

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