2012-10-25 58 views
0

我有以下代碼:請求會員在一些不是結構或聯盟的東西?

people[nextfreeplace] -> personName = name; 
people[nextfreeplace] -> age = age; 

typedef struct person 
{ 
    char *personName; 
    int age; 
}Person; 

的人聲明Person *people[]

我收到了一條error: request for member 'personName' in something not a structure or union

error: request for member 'age' in something not a structure or union 

,但我不知道什麼是錯的程序。

感謝

+2

如何'people'聲明? – Roddy

+0

@Roddy人*人[] – AkshaiShah

+2

你能張貼*最小*,完整的,可編譯例子嗎?你所說的沒有加起來。這種精細編譯:http://ideone.com/GgWtaB – Roddy

回答

0

使用.而不是->,因爲你正在使用的結構數組。

+1

現在知道了這個聲明'人*人[]',你的答案是不正確的(再)。 – alk

+0

爲什麼upvote?這根本不是正確的答案,不要說它是錯的。 – alk

2

我假設peoplePerson *Person[]

當使用操作->,取消引用和訪問變量。這相當於做(*var).personName

更改->以點,使用人的時候爲[1],你已經取消引用指針,然後訪問您的變量像你這樣一個類型的簡單Person var

people[nextfreeplace].personName = name; 
people[nextfreeplace].age = age; 
+0

我試過了,但我仍然收到同樣的錯誤。你是正確的人是'人*人[]' – AkshaiShah

+0

是您的代碼使用char *的PERSONNAME爲OT作爲characcter數組的指針。看到結構聲明,它是一個指向字符串的指針。你有沒有在你的代碼中以這種方式使用它? –

+0

你可以用人聲明編輯你的問題嗎?使用'人*人[]'通常應該使用'人的工作[1] - > PERSONNAME;'而且你確定錯誤來自於你在粘貼的線? – tomahh

0

聲明做需要在訪問類型的(成員)實例之前完成。

typedef struct person 
{ 
    char *personName; 
    int age; 
}Person; 

... 

Person *people[]; 

... 

people[nextfreeplace] -> personName = name; 
people[nextfreeplace] -> age = age; 
相關問題