2016-12-09 16 views
-7

私はプロミスチネーターであるため、明日の最終日は10時までにこれを学ばなければなりません。Cで - >演算子は何をしますか?

あなたが好きなら私はすべて私を叱ることができます。ここで私が持っているのは、リンクされたリストを理解するためのポインタと、ポインタを使って作業するときの私の心の邪魔になるものを理解しなければならない場合です。->が使用されます。

私が検索したことから、変数が指しているものが変わりますか?

サンプルコードの行私の教授は、このコードでは、このような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です。

関連する問題