簡體   English   中英

為什么我不能正確使用'->'? 我知道這可能是一個簡單的概念性錯誤,但不知道為什么

[英]Why am I not using '->' correctly? I know it is probably a simple conceptual mistake, but don't know why

抱歉,我不得不問這個問題,這讓我有些尷尬。 我似乎無法發現為什么我在C語言中使用->命令是錯誤的。 我知道'x-> y'等效於'(** x).y',但是由於某些原因,我在上課的第一個項目中錯誤地使用了它。

從角度來看,我的項目中有28個錯誤; 26是來自這種誤解,兩個是來自帶有C99模式之外的初始聲明的for循環-這對我來說並不重要,因為我必須將此代碼轉移到Unix機器上以在此處進行編譯,因此這些錯誤不會發生。不會發生。

我得到的具體錯誤是這樣的:

C:\Users\Nick\Documents\School\CS449\Programs\Project 1\EXIF Viewer\main.c|78|error:invalid type argument of '->' (have 'struct tag')|

在這26個錯誤中,每個錯誤的結構都是這樣,但有人說(有“結構頭”),而有人說(有“結構標簽”)。

我將在這篇文章的底部包括我的全部代碼,但是相關的結構聲明和調用是這樣設置的:

struct tag the_tag;//The reused tag

^這是一個全局結構變量

struct header intro; //Bytes 0-19 of the program

^這是int main(argc,** argv){}中的本地結構頭

給我這些錯誤的一些行是:

56:  else if(intro->endianness[0] != 'I')
74:  if(the_tag->tag_identifier == (0x010F))
78:  printf("Manufacturer: %s\n", the_tag->data);
98:  else if(the_tag->tag_identifier == (0x08769))
125: else if(tagger->tag_identifier == 0x8827)

有人可以解釋我在C語言中對該解引用器的理解不正確的地方,為什么這些調用按我期望的那樣工作? 我很困惑,我的Google /搜索技能對這次活動沒有任何幫助。 謝謝您的幫助。

這是我的pastebin: http//pastebin.com/ck8ThFLG

a->b等效於(*a).b

由於intro的類型為struct header ,因此可以使用來輕松訪問其成員. (例如) struct header*類型的intro_ptr變量需要->

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM