2016-12-09 3 views
-7

Мне нужно узнать это завтра 10 утра для финала, потому что я прокрастинатор.Что делает оператор -> в C?

Я знаю, что все могут ругать меня, если хотите. То, что у меня здесь есть, я должен понимать указатели, чтобы понять связанные списки, и единственное, что пугает мой разум при работе с указателями, - это когда используется ->.

Из того, что я искал в googled, он меняет то, на что указывает переменная?

Это меня смущает, когда есть строки в коде примера мой профессор дал мне, например, temp = temp->head в этом коде или когда он заявляет printf("%d", temp->num);

Может кто-нибудь, пожалуйста, помогите объяснить это? Заранее спасибо.

#include <malloc.h> 
    #include <stdio.h> 
    #include <stdlib.h> 

    struct node 
    { 
     int num; 
     struct node *ptr; 
    }; 

    typedef struct node NODE; 

    int main() 
    { 
     NODE *head, *temp = 0, *first; 
    int count = 0; 
    int choice = 1; 

    while(choice) 
    { 
     head = (NODE *)malloc(sizeof(NODE)); 

    printf("Enter the value: \n"); 
    scanf("%d", &head->num); 

    if (first != 0) 
    { 
     temp->ptr = head; 
     temp = head; 
    } 
    else 
     first = temp = head; 
    fflush(stdin); 
    printf("Do you want to continue?"); 
    scanf("%d", &choice); 
    } 

    temp->ptr = 0; 
    temp = first; 
    printf("\nStatus of the linked list"); 

    while (temp != 0) 
    { 
     printf("%d->" temp->num); 
    count++; 
    temp = temp->ptr; 
    } 
    printf("NULL\n"); 
    printf("Number of entries in linked list %d", count); 
    return 0; 
    } 
} 

ответ

3

Он выводит на экран указатель на структуру и получает доступ к элементу структуры.

Возьмем, к примеру, из кода:

temp->ptr = head; 

Это то же самое, как

(*temp).ptr = head; 

Оператор "стрелка" сделать это немного проще.

Существует some history behind the -> operator, если вам интересно.

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