我删除了多余的包含,iostream
以便您的源代码实际上编译为 C 并在我的系统上将其编译为名为 vypis 的可执行文件。这是我发现的:
$ nm vypis | fgrep vypis
00000000004004d0 T vypis
0000000000600888 D vypis_ptr
所以,vypis
一个函数,在“文本”部分是一个全局变量,而vypis_ptr
一个指向函数的指针,在“数据”部分是一个全局变量。
数据部分中的对象具有存储在可执行文件中的值,我可以vypis_ptr
通过使用objdump
.
$ objdump -d -j .data vypis
vypis: file format elf64-x86-64
Disassembly of section .data:
0000000000600878 <__data_start>:
...
0000000000600880 <__dso_handle>:
...
0000000000600888 <vypis_ptr>:
600888: d0 04 40 00 00 00 00 00 ..@.....
0000000000600890 <bla>:
600890: a8 08 60 00 00 00 00 00 ..`.....
在这里我们可以看到该值4004d0
存储在其中,vypis_ptr
但这正是 的vypis
输出中显示的位置nm
。