2015-06-27 120 views
1
typedef struct 
{ 
    unsigned int a; 
    unsigned char b[10]; 
    unsigned char c; 
}acc1; 

typedef struct 
{ 
    unsigned char z[10]; 
    acc1 *x,y[10]; 
}acc2; 

extern acc2 p[2]; 

我想從acc2 array p[2]訪問struct acc1變量。如何使用指針和數組訪問嵌套結構?

當我這樣做時,我會出現分段錯誤。請如何做到這一點

+1

「_segmenatation故障問題來了許多times_」 - 請出示你的代碼。 –

+1

請注意,'x'是指向'acc1'的指針,而'y'是10'acc1'的數組,而不是指針數組。也許這是你想要的,也許不是。這些情況最好用分隔線表示:'acc1 * x; acc1 y [10];'。 – rodrigo

+0

strcpy(p [0] .x-> b,「1024」);在這個問題上得到segmantation錯誤? – kabhis

回答

2

要訪問y的元素引導做:

char c = p[some index between 0 and 1].y[some index between 0 and 9].c 

要訪問x簡稱元素做:

size_t i = some index between 0 and 1; 
p[i].x = malloc(somenumber_of_elements * sizeof *p[i].x); 
if (NULL == p[i].x) 
{ 
    abort(); /* Failure to allocate memory. */ 
} 
char c = p[i].x[some index less then somenumber_of_elements].c; 

參考kabhis評論

p [0] .x-> c它是不正確的?

假設分配與上面somenumber_of_elements更大0,則:

char c = p[i].x[0].c; 

相當於

char c = p[i].x->c; 

somenumber_of_elements更大1

char c = p[i].x[1].c; 

相當於

char c = (p[i].x + 1)->c; 

等等...

+0

感謝p [0] .x-> c是不正確的? – kabhis

+0

@kabhis:請看我更新的答案。 – alk

+0

strcpy(p [0] .x-> b,「1024」);得到segmantation錯誤..... – kabhis