c - 如何在结构中交换数组的结构元素 - C

标签 c struct swap items

我有两个结构

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 中是局部的,会有什么变化吗?

谢谢

最佳答案

您的函数只交换指针 psp,而不交换它们指向的实际结构。为此,您需要复制结构,例如

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/

相关文章:

c++ - 在内存中分配多个结构

c - 为什么我们不能访问我们在结构中填充的位?

c - 如何将全0设置为通过结构(C)声明的数组?

java - 交换 LinkedList 中的元素

c - 我如何只交换一个而不是两个值?

c - 初始化二维数组是否适合将连续整数映射到 C 中的字符串?

c - C99 标准中的哪里说有符号整数溢出是未定义的行为?

c - 如何在 VC++ 的 char* 中获取用户输入的字符串?

python - 交换数组中的元素

c - 使用gtk状态图标没有内存泄漏