我有两个结构
typedef struct {
int i;
int p;
} item;
typedef struct {
item items[10];
} buffer;
void swap (item** p1, item** p2) {
item* temp = *p1;
*p1 = *p2;
*p2 = temp;
}
我正在尝试打电话
item *ps = &buffer.items[0];
item *p = &buffer.items[1];
swap(&ps, &p);
但它不是交换它们?我究竟做错了什么?谢谢 如果 struct buffer 在 main 或 global 中是局部的,会有什么变化吗?
谢谢
最佳答案
您的函数只交换指针 ps
和p
,而不交换它们指向的实际结构。为此,您需要复制结构,例如
void swap (item* p1, item* p2) {
item temp = *p1;
*p1 = *p2;
*p2 = temp;
}
调用为
swap(&buffer.items[0], &buffer.items[1]);
关于c - 如何在结构中交换数组的结构元素 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36746296/