Если вы хотите захватить адреса в пределах fun
, чтобы увидеть, где они находятся в стеке (или там, где они находятся в памяти), и вы хотите вернуть все эти адреса в main
, вы можете использовать это:
#include <iostream>
#include <map>
using namespace std;
map<const char*, void*> fun(char b, long c, char d) {
short p, q, r;
int y;
return {
{ "b", &b },
{ "c", &c },
{ "d", &d },
{ "p", &p },
{ "q", &q },
{ "r", &r },
{ "y", &y },
{ "b", &b }
};
}
int main() {
auto results = fun ('a', 123, 'b');
for (auto p: results) {
printf("%s is at %p\n", p.first, p.second);
}
}
Для меня это показывалось
b is at 0x7ffdec704a24
c is at 0x7ffdec704a18
d is at 0x7ffdec704a20
p is at 0x7ffdec704a36
q is at 0x7ffdec704a38
r is at 0x7ffdec704a3a
y is at 0x7ffdec704a3c
Помните, что, как отмечали другие, вы не можете использовать эти адреса в main
!ИМХО, было бы гораздо лучше просто выполнить вызовы printf
внутри самого fun
.Но не беспокойтесь!Надеюсь, это поможет.