0

Ниже приводится часть кода, который написал для создания связного спискаопределение переменной в структуре

struct node 
{ int data; 
struct node *link; 
}*head; 

В приведенном выше исходного кода, я хочу спросить, что ли голова переменная "узла " или нет. Я думаю, что когда я объявлял его со структурой, поэтому он должен быть переменной для определенной структуры &, таким образом, содержать часть данных & адресную часть. Если я ошибаюсь, кто-нибудь может рассказать мне, что является роли * head & Это переменная или нет?

Теперь это вторая часть одного и того же исходного кода

void addbeg() 
{ 
int d,g; 
struct node *temp; 
temp=(struct node *)malloc(sizeof(struct node)); 
} 

Здесь void addbeg функция, теперь мы объявили другую переменную struct node, то почему мы выделения его памяти равна int, поскольку он является переменной для узла структуры, поэтому он должен содержать размер указателя & a int. Но почему все еще выделяет его память. Пожалуйста, устраните это сомнение.

+1

Ну расскажите, пожалуйста, почему * являются * вы выделения памяти для одного 'struct'? К первому вопросу, '* head' является * указателем * для' struct node'. –

+2

О, ничего себе, вы должны сначала изучить указатели и управление памятью в C (а также 'struct' заявление), иначе любой ответ будет смехотворно огромным. – ForceBru

ответ

1

Я попытаюсь кратко объяснить ваши вопросы, но чтобы решить вашу путаницу, комментарий @ ForceBru - это правильная идея.

  1. Использование struct в C, определяя переменную сразу после определения struct является кратчайшим, чтобы сделать эти два шага по отдельности, а именно она равна define the struct + struct node *head (определить переменную, указывающую на узел STRUCT/указатель на узел).

  2. temp как указатель на узел STRUCT подобен переменной node, за исключением того, что она теперь указывает на узел реальной структуры, которые были только в выделенной области памяти (с использованием malloc). Он похож на следующий код, но отличается тем, должен ли компилятор или самостоятельно управлять выделенной памятью (из-за динамического распределения памяти).

    // define a struct node that's allocated and managed by the compiler 
    struct node nodeOfTemp; 
    struct node *temp = &nodeOfTemp; 
    
+0

рассмотрите следующий код struct student struct student { имя персонажа [50]; int roll; поплавковые марки; } s1; Здесь s1 - это переменная до выше структуры ученика и будет иметь все части структуры, а не любой адрес, как это происходит в вышеприведенном случае узла struct, * head - это указатель. –

Смежные вопросы