C ++ Обмен массивами целых чисел, переданных через параметр int & - PullRequest
0 голосов
/ 19 февраля 2010

Мне нужно обменять пару целых чисел в формате int i[2] с помощью функции void swap(int& x). Как видите, функция принимает аргумент типа int&. Вот нерабочая версия функции:

int i[2] = {3, 7};

void swap (int& x)
{
    int temp;
    temp = x[1];
    x[1] = x[0];
    x[0] = temp;
}

int main()
{
    cout << i[0] << ", " << i[1] << "\n"; // return the original: (3, 7)
    swap(i);
    cout << i[0] << ", " << i[1] << "\n"; // return i swapped: (7, 3)
}

Как мне это сделать?

Изменить: Ответ не может использовать что-либо еще для параметра функции. Он ДОЛЖЕН использовать параметр int&. Это проблема из книги Бьярна Страуструпа: «Язык программирования C ++», третье издание. Это проблема № 4 из главы 5. Вначале задача состоит в том, чтобы написать функцию, принимающую int* в качестве параметра, а затем изменить ее для принятия int& в качестве параметра.

Ответы [ 3 ]

6 голосов
/ 19 февраля 2010

Ссылка не указатель.Я бы порекомендовал изменить сигнатуру функции, если вы можете, но если вы застряли с ней, вы можете сделать что-то вроде:

int *xx = &x;
int temp = xx[1];
xx[1] = xx[0];
xx[0] = temp;

Тем не менее, вам, вероятно, следует просто использовать вместо него std :: swap.

3 голосов
/ 19 февраля 2010

Глядя на мою копию, в упражнении не говорится, как должна выглядеть swap(). Он просто говорит, что он "заменяет (обменивает значение) два целых числа" и должен принимать a) int* b) int& в качестве аргумента типа.

Когда вы пометили вопрос learning , реальный вопрос становится:
Почему ваш swap() принимает только один аргумент?

0 голосов
/ 20 февраля 2010

Хорошо, благодаря предложениям @ gf, я нашел решение :) Большое спасибо!Пожалуйста, скажите мне, если вы видите что-то не очень похожее на C ++.

// Swap integers

#include<iostream>

using namespace std;

int i = 3;
int j = 7;

void swap (int& x, int& y)
{
    int temp = x;
    x = y;
    y = temp;
}

int main()
{
    cout << i << ", " << j << "\n"; // return the original: (3, 7)
    swap(i, j);
    cout << i << ", " << j << "\n"; // return i swapped: (7, 3)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...