c - 如何在C中打印双指针值
问题描述
我们正在为 C 中的通用类型数据实现优先级队列。我们认为指针等之间的分配是正确的,但我们不知道如何在最后打印“元素”的 int 值。你能帮助我吗?
#include <stdio.h>
#include <stdlib.h>
struct _pqElement{
void** data;
void** priority;
};
pqElement* pqElement_new(void* data, void* priority){
pqElement* result = (pqElement*) malloc (sizeof(pqElement));
result->data=&data;
result->priority=&priority;
return result;
}
static int* new_int(int value){
int *elem=(int*)malloc(sizeof(int));
*elem=value;
return elem;
}
int main(int argc, char const *argv[]){
pqElement * element = pqElement_new(new_int(1), new_int(85));
printf("%d-%d", element->data, element->priority);
}
解决方案
您不需要两级指针。
#include <stdio.h>
#include <stdlib.h>
struct pqElement{
void *data;
void *priority;
};
struct pqElement* pqElement_new(void* data, void *priority)
{
struct pqElement* result = malloc(sizeof(struct pqElement));
result->data = data;
result->priority = priority;
return result;
}
static int* new_int(int value)
{
int *elem = malloc(sizeof(int));
*elem=value;
return elem;
}
int main(int argc, char const *argv[])
{
struct pqElement *element = pqElement_new(new_int(1), new_int(85));
printf("%d-%d", *(int*)element->data, *(int*)element->priority);
}
最后打印值需要以正确的方式转换指针,正如 Alexander Pane 已经提到的那样。
使用不同类型的优先级也会使队列不那么通用。您需要为排序、打印等提供不同的功能。
推荐阅读
- css - 现有背景图像上的渐变背景图像
- c - Does the -O0 compiler flag have the same effect as the volatile keyword in C?
- angular - Ionic 3 和 Ngzone 不工作 - 不将结果更新到 HTML 视图
- kubernetes - 如何仅更新容器?
- reactjs - 无法在reactjs jsx中自动完成标签
- python - python调试器:不以交互方式初始化变量
- c++11 - 我初始化 char *str1 = nullptr 并输出到屏幕...但是当我想输出到其他变量时,我收到空屏幕..为什么会这样?
- django - 在 cron 中运行 django manage.py 命令
- react-native - React-Native:无法解析配置“:app:debugCompileClasspath”的所有依赖项
- visual-c++ - 具有多个基类的 Natvis