gpt4 book ai didi

c - 如何在 C 中打印 void** 数据项?

转载 作者:太空宇宙 更新时间:2023-11-04 06:33:54 26 4
gpt4 key购买 nike

在尝试为 C 堆栈构建测试平台时,我遇到了如何正确显示它的问题。我已经检查了六本书,它们都有一种将堆栈插入堆栈或从堆栈弹出的方法,但没有一本示例说明您如何实际使用这些例程。谁能告诉我模式,这样我就可以编写调试 printf 语句了?

对 pop 的调用使用了这个结构:

{ struct Element *next; void *data; }

弹出函数是:

int pop ( tElement **stack, void **data )

如何打印数据项。

最佳答案

你可以打印出指针值:

void print_data (void **data) {
printf("%p", data);
if (data) printf(", *%p", *data);
}

或者,你可以给数据结构的使用者提供一个回调钩子(Hook),为你提供一个打印功能:

void pretty_print_data (void **data, void (*print_callback)(void **)) {
printf("%p%s", data, (data ? "" : ": "));
if (data) printf(", *%p: ", *data);
if (print_callback) print_callback(data);
}

提供回调的程序员知道data应该是什么类型:

void print_point (void **data) {
if (data && *data) {
point *p = *data;
printf("(%d, %d)", p->x, p->y);
} else {
printf("nil");
}
}

关于c - 如何在 C 中打印 void** 数据项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17224660/

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