gpt4 book ai didi

c - glib GHashtable 取消引用 gpointer

转载 作者:行者123 更新时间:2023-11-30 15:18:13 27 4
gpt4 key购买 nike

您好,这个问题与 GLib、gpointer 相关。

我创建了一个 gpointer 类型的值。

    gpointer        keys;

我调用了一个函数

insert_data(gpointer key);

我像这样将整数指针传递给了这个函数。

int* p = malloc(sizeof(int));
*p = 1;
// gpointer is void* pointer, I cast it to integer type pointer here.
insert_data(p);

在函数内部我想查看 p 的值。

printf("%d\n", (int*)p);

它输出一些非常大的数字。从我这边来看,它是 296304,而不是实际值 1。我想知道如何取消引用像 gpointer 这样的指针。

对于整数32位指针、char*指针,如何解引用它们?

谢谢

最佳答案

您正在尝试打印指针本身。从技术上讲,这是 undefined behaviour因为您使用了错误的格式说明符来打印指针。您观察到的是指针p的整数解释。

改变

printf("%d\n", (int*)p);

printf("%d\n", *(int*)p);

或者你可以这样做:

insert_data(gpointer ptr)
{
int *p = ptr;
printf("%d\n", *p);
...
}

关于c - glib GHashtable 取消引用 gpointer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31619403/

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