c - 在同一结构内具有指向自身的指针的结构

标签 c pointers linked-list

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

#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

最佳答案

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

关于c - 在同一结构内具有指向自身的指针的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56311841/

相关文章:

c - 将指向结构的指针作为参数传递

c - 在分配它的 void 函数之外释放内存

c++ - 指针是否保证 > 某个值?

c - 在 C 中动态构建二叉树时指针分配的问题

java - 需要一个包含 Queue.Node 的封闭实例

c - 所有 gcc 版本都支持 gcc 的 @file 选项吗?

c - C标准库中有类似 `fcntl()`的函数吗?

android - 优化我的内部循环(ARM,android ndk)

c - 如何增加链表中的指针

c++ - 为什么我的 C++ 程序不打印 LinkedList 的所有项目?