2015-11-06 77 views
2

當你有一個包含數組和數組長度的結構時,如何訪問數組的特定索引?如何訪問C中結構中索引處的元素?

我定義我的結構:

struct intqq { 
    int a[0]; 
    int len; 
}; 

那麼我將如何訪問一個特定元素數組中的結構?

+0

你需要做的在C?使用STL在C++中更容易(也更安全)。 – tweej

+0

是的,我正在處理C這個特定的問題 –

+3

你需要把數組放在結構的末尾。 – user3386109

回答

0

處理這個問題的常規方法是保持數組和長度彼此分開,並將它們傳遞給任何需要它們的函數。這也使您可以自由地聲明具有靜態大小的數組或通過malloc動態地聲明數組。

0

對於此零長度數組的工作,您需要將該數組作爲該結構的last member,而不是第一個。然後應該可以照常訪問索引。

https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    typedef struct { 
     int x; 
     int y[]; 
    } flex; 

    int len = 10; 
    flex *f1 = malloc(sizeof(flex) + sizeof(int) * len); 

    f1->x = len; 
    f1->y[0] = 1; 
    f1->y[1] = 2; 
    printf ("y[1] = %d\n", f1->y[1]); 
} 
+0

即使我這樣做,我收到了一堆編譯錯誤 –

+0

你能複製你用來編譯的命令,還有錯誤信息? – artm

+0

你使用什麼編譯器? – artm