c - 在同一结构中具有指向自身的指针的结构
问题描述
在这个程序中,我有一个结构节点。结构节点内还有另一个链接指针。谁能解释这个链接指针是如何工作的。编译器在运行时对这个代码片段做了什么。结构指针转换为什么。请向我解释在机器级别发生了什么。如果这是一个愚蠢的问题,请原谅。我对此完全感到困惑。
#include<stdio.h>
struct node{
int data;
struct node *link;
}*top=NULL;
void main(){
}
这是我运行 gcc -S 时的汇编代码
.file "test.c"
.globl top
.bss
.align 8
.type top, @object
.size top, 8
top:
.zero 8
.text
.globl main
.type main, @function
main:
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
nop
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE0:
.size main, .-main
.ident "GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609"
.section .note.GNU-stack,"",@progbits
解决方案
它不是指向自身的指针。它是指向另一个相同类型对象的指针(当然也可以通过对封闭对象的引用来分配它)。当一个对象持有对另一个对象的引用时,这用于创建链接列表。
推荐阅读
- javascript - 单击选项时的事件委托,不适用于克隆元素
- c++ - 在 DirectX 正交相机中从深度查看空间位置
- c - 无法理解 c 中的 char malloc()
- sql - plsql游标活动集结果不按顺序
- vue.js - 在 Vue.js 中捕获和重定向 JWT 令牌过期,而不阻止 Vue 3 中的其他 401 错误
- javascript - 将文件对象转换为可用的 csv
- html - 尝试将 tailwindcss 图标放入输入
- ios - 如何构建一个在应用程序关闭时继续计数的秒表?
- influxdb - InfluxDB2.0 如何在更大的时间范围内计算每日价值?
- javascript - 为什么要在 javascript 中打印“NaN”值?