首页 > 解决方案 > 在同一结构中具有指向自身的指针的结构

问题描述

在这个程序中,我有一个结构节点。结构节点内还有另一个链接指针。谁能解释这个链接指针是如何工作的。编译器在运行时对这个代码片段做了什么。结构指针转换为什么。请向我解释在机器级别发生了什么。如果这是一个愚蠢的问题,请原谅。我对此完全感到困惑。

#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

标签: cpointerslinked-list

解决方案


它不是指向自身的指针。它是指向另一个相同类型对象的指针(当然也可以通过对封闭对象的引用来分配它)。当一个对象持有对另一个对象的引用时,这用于创建链接列表。


推荐阅读