【发布时间】:2012-04-29 21:30:25
【问题描述】:
结构如下,内部结构在外部结构内部。两个结构都是动态分配的。当我尝试通过引用来访问内部结构以更改地址值时,就会出现问题。
例如:
typedef struct{
char address[32];
}inner;
typedef struct{
struct inner innerStruct;
}outer;
main(){
int i = 0;
outer* outerArray;
outer* outerReference;
inner* innerReference;
/* create 20 outer structs */
outerArray = malloc(20 * sizeof(outerArray*));
/* for each outer struct, dynamically allocate 10 inner structs */
for(i = 0; i < 10; i++)
{
outerReference = outerArray + i;
outerReference->innerStruct = malloc(10 * sizeof(outerReference->innerStruct);
}
}
如何访问outerArray[3][innerStruct[4],第4个外部结构的第5个内部结构并更改其地址值?
【问题讨论】:
-
该代码无法编译(出于多种原因)。您似乎将指针与对象实例混为一谈。
-
为什么投反对票?对于学习驾驭复杂结构、指针和内存分配的人来说,这似乎是一个完全合理的问题。
标签: c struct nested dynamic-arrays dereference