0

我有一个结构:

struct points{
int i;
int x;
int y;
};

我制作了一个结构数组并将其命名为 temp。然后我又做了一个并将其命名为 pt。假设我把一些内容放到 temp. 如何将 temp 的元素复制到 pt?

这是我的 memcpy 代码,编译器说这是分段错误。请帮忙。

#define MAX_POINTS 400
struct points temp[MAX_POINTS];
/* Some code to input elements to array temp */
struct points pt[i]; /* array of struct with i elements*/
memcpy(&pt, &temp, sizeof (temp));
4

1 回答 1

3

你必须小心只复制两者中较小的一个,在这里我想i < MAX_POINTS

memcpy(pt, temp, sizeof pt);

也正如其他人已经说过的那样,这&是不正确的。例如,您需要一个指向第一个元素的指针&pt[0],或者就像数组在该上下文中pt衰减到一样。&pt[0]

请注意,pt如果是一个变量,您的分配是一个可变长度数组ii如果变得太大,这可能很危险并导致堆栈溢出。所以如果你打算在这里使用大型数组,最好使用malloc

struct points* pt = malloc(sizeof(struct points[i]));
memcpy(pt, temp, sizeof(struct points[i]);

不幸的是,你不能sizeof pt使用memcpy.

于 2013-07-11T14:25:57.803 回答