2015-06-27 89 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