Структура с указателем на себя внутри той же структуры - PullRequest
0 голосов
/ 26 мая 2019

В этой программе у меня есть struct Node. В struct node есть еще один указатель ссылки. Может кто-нибудь объяснить, как работает этот указатель ссылки. Что делает компилятор с этим фрагментом кода, когда он выполняется? Пожалуйста, объясните мне, что происходит на машинном уровне. Пожалуйста, извините, если это глупый вопрос. Я полностью смущен этим.

#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

1 Ответ

4 голосов
/ 26 мая 2019

Это не указатель на себя.Это указатель на другой объект того же типа (он может быть назначен, конечно же, со ссылкой на включающий объект).Это используется для создания связанного списка, когда один объект содержит ссылку на другой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...