首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用指针c++交换结构数组中的元素

使用指针c++交换结构数组中的元素
EN

Stack Overflow用户
提问于 2018-06-09 08:06:47
回答 1查看 466关注 0票数 0

我看到了几个类似的问题,但他们没有针对我的具体情况的答案。我只需要交换一个结构数组中两个元素的位置,但是到目前为止我尝试过的所有东西都只能复制其中的一个。我认为问题出在交换函数上。

我需要在不使用标准库函数的情况下做到这一点。这就是我所拥有的:

代码语言:javascript
复制
struct RentalCar {
    int year;
    char make[STRLEN];
    char model[STRLEN];
    float price;
    bool available;
};

void carCopy(RentalCar *dest, RentalCar *source) { // dest = source
    dest->year = source->year;
    myStrCpy(dest->make, source->make);            // copy c-strings
    myStrCpy(dest->model, source->model);
    dest->price = source->price;
    dest->available = source->available;
}

void carSwap(RentalCar *car1, RentalCar *car2) {
    RentalCar *carTemp = car1;
    carCopy(carTemp, car2);   // tried different orders, only copy no swap
    carCopy(car2, car1);
}

char *myStrCpy(char *dest, const char *source) {    // copy cstring
    char *origin = dest;                            // non iterated address
    while (*source || *dest) {
        *dest = *source;
        dest++;
        source++;
    }
    return origin;  // could return void instead
}
EN

回答 1

Stack Overflow用户

发布于 2018-06-09 08:12:05

carSwap中,carTemp是指向与car1相同的内存位置的指针。这条线

代码语言:javascript
复制
carCopy(carTemp, car2);   // tried different orders, only copy no swap

car2覆盖car1

carSwap更改为:

代码语言:javascript
复制
void carSwap(RentalCar *car1, RentalCar *car2) {
    RentalCar carTemp;
    carCopy(&carTemp, car2);
    carCopy(car2, car1);
    carCopy(car1, &carTemp);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50769780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档