Closed. This question needs details or clarity. It is not currently accepting answers. Learn more。
想改进这个问题吗?添加细节并通过editing this post澄清问题。
三年前关闭。
在这段代码之后
您可以将
这样,保存的不是实际指针,而是从分配开始的偏移量。这个价值永远不需要改变。
想改进这个问题吗?添加细节并通过editing this post澄清问题。
三年前关闭。
struct AD_SINT32Type* = NULL;
foo = (struct mystructArray*)malloc(sizeof(struct mystructArray));
foo[0].x = 45;
foo[0].y = 90;
coords[0] = &foo[0];
foo = (struct mystructArray*)realloc(foo, 2 * sizeof(struct mystructArray));
foo[1].x = 30;
foo[1].y = 15;
coords[1] = &foo[1];
在这段代码之后
"coords[1]"
按预期指向,但是"coords[0]"
指向重新分配之前的旧地址。是否有方法自动调整地址"coords[0]"
指向? 最佳答案
没有完全“自动”的方法来实现这一点,但是在这种需要重新分配的情况下,您经常会看到“偏移指针”的使用
coords[0] = &foo[0];
您可以将
coords
的类型更改为类似于ptrdiff_t[]
的类型,然后执行以下操作:coords[0] = &foo[0] - foo;
这样,保存的不是实际指针,而是从分配开始的偏移量。这个价值永远不需要改变。