2011-04-12 76 views
1
struct result { 
    int number; 
    int length; 
}; 

struct result findLongestSeq(int intarray[], int size) { 
    result->number // undefined symbol 
} 

如何訪問功能findLongestSeq內部結構的結果?如何訪問結構?

感謝

回答

3
struct result { 
    int number; 
    int length; 
}; 

struct result findLongestSeq(int intarray[], int size) { 
    struct result result; 
    result.number = 0; 
    result.length = 42; 
    return result; 
} 

如果你正在處理struct result foo那麼你通過foo.number訪問其成員。 如果您正在處理指向foo的指針(struct result *foo),那麼您通過foo->number訪問其成員。

如果你是通過

struct result *result = (struct result *)malloc(sizeof (struct result)); 

手動分配的結果是結構然後,你必須通過result->number訪問其成員(並會負責釋放它一旦不再使用)。


進一步,我寧願用這個更好的可讀性的原因:

typedef struct { 
    int number; 
    int length; 
} ResultStruct; 

這樣你就可以使用ResultStruct result;,而不是冗餘和詳細struct result result;

+3

你可能打算'結構導致的結果訪問此結構的成員;' – Erik 2011-04-12 12:27:00

+0

哎喲,肯定我做到了。謝謝!這就是爲什麼我傾向於鍵入我的結構。 :P – Regexident 2011-04-12 12:31:10

0

您有隻需輸入

struct result { 
    int number; 
    int length; 
}; 

你只定義一個名爲結果的結構實際上是如何的模樣,什麼部位是由即要記住。這是一個通用的定義,但是你有這種類型的變量。

爲了這個結構的存儲數據必須由

struct result myResult; 

創建一個變量或者無論你怎麼稱呼它。在這一點上,你可以利用myResult.number