【发布时间】:2023-03-18 11:38:01
【问题描述】:
我正在尝试实现以下功能:
int foo(const void *p, unsigned int n);
其中 p 实际上是一个指向 int 值的 n-levels 指针,函数必须返回该值。所以:
-
n = 0:
value = (int)(p); -
n = 1:
value = *(int*)(p); - n = 2:p 是一个指向 int 值的指针
等等……
所以,我认为下面的实现可能是正确的:
int foo(const void *p, unsigned int n) {
if (!n) {
return (int)p;
}
return foo((void*)*((int*)p), n - 1);
}
但是,在这段代码中,我假设指针的大小总是等于 int 的大小,我知道这不是真的。但是,由于 p 始终是指向 int 指针的指针(n 次),我想也许我总是可以将 p 转换为指向 int 的指针int 就像我在代码中所做的那样。
我的想法正确吗?我在网上找不到类似的问题。
提前致谢!
【问题讨论】:
-
到底是什么让你遇到了这个问题?
-
是的,指向
int的指针与指向void的指针大小相同。这是一个很好的古怪问题;我希望上帝这是为了好玩,而您实际上并没有将其用于某事。 -
更有趣的问题是如何创建指向整数的 n 级指针。
-
一个厨子糟蹋汤
-
别担心,这只是为了好玩!实际上,我只是想知道一种方法。
标签: c++ c pointers void-pointers