gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 04:30:33 24 4
gpt4 key购买 nike

我有两个结构

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com