2016-09-18 84 views
-6

下面是代碼:原始代碼和修改代碼有什麼區別?

typedef struct 
{ 
    char name[128]; 
    int salary; 
} Employee; 


Employee *input_employee() 
{ 
    Employee *e = (Employee*)malloc(sizeof(Employee)); 
    scanf("%[^/]s" , e.name); 
    return e; 
} 

被稱爲在main(),並給出一個編譯錯誤,但是,經過輔修input_employee()功能,即改變:

e.name;改爲e->name;

它編譯沒有錯誤。

糾正的含義是什麼,最初的錯誤是什麼?

+0

@SouravGhosh結構不是標量類型。 – 2501

+0

...你也不需要在C中使用'malloc'。這不是好的做法 –

+1

'e-> name'是'(* e).name'的縮寫。如果'e'是'Empolyee'類型,則使用'e.name'。如果'e'的類型爲'Employee *',則可以使用'e-> name'或'(* e).name'(因爲'* e'是'Employee'類型的)。 –

回答

1

要訪問stuct構件在對象實例使用點(接入)操作者.,然而,當對象的實例是一個指針需要解引用它首先,然後訪問成員,即:(*e).name相當於e->name,稱爲箭頭運算符