Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Hard_core94
0 / 0 / 0
Регистрация: 31.01.2014
Сообщений: 4
#1

Взаимный обмен значений указателей в параметрах функции - C++

09.02.2014, 18:56. Просмотров 329. Ответов 1
Метки нет (Все метки)

Необходимо создать шаблонную функцию
C++
1
void f(int *x, float *y)
в которой *х - указатель на массив, состоящий из целых чисел, *у - указатель на массив, состоящий из чисел типа float

Я хотел поэлементно обменять массивы

Вот что получилось

C++
1
2
3
4
5
6
7
template <class typename A, class typename B>
void f(A *x, B *y)
{
    A temp = *x;
    *x = A *y;
    *y = B temp;
}
Но преподавателю не понравилось, что я указателю присвоил указатель. Соответственно задание не выполнено.

Помогите пожалуйста!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2014, 18:56     Взаимный обмен значений указателей в параметрах функции
Посмотрите здесь:

Обмен значений 2 указателей в функции - C++
Добрый вечер всем. Хочу при помощи функции менять адреса двух указателей. Вот код: #include &lt;iostream&gt; using namespace std; ...

Ошибка в параметрах функции - C++
Здравствуйте! Прошу помочь разобраться. Никак не могу понять как правильно написать параметры функции, чтобы принимала и переменные...

Таблица в параметрах функции - C++
Гуру, помогите пожалуста новичку! Хочу заменить if ((cmd_SS==&quot;Q&quot;)|(cmd_SS==&quot;QUIT&quot;)|(cmd_SS==&quot;EXIT&quot;)) {} на одну функцию if...

bool в параметрах функции - C++
можно ли использовать тип bool в параметрах функции? void draw(char ch, int width, bool vline, bool hline ); или лучше использовать...

Указатели в параметрах функции - C++
Доброго времени суток! У меня &quot;вопрос&quot;, кто-нибудь может максимально подробно объяснить разницу между: 1) void ff (Listt **zag, int v){ ...

Ключевое слово class в параметрах функции - C++
Всем привет. Увидел в чужом коде такую конструкцию. void SomeFunction(class SomeClass * a) { a-&gt;F(); } В параметрах...

Как реализовать флаги в параметрах функции - C++
Объясните пожалуйста как реализовать флаги в параметрах функции. К примеру: есть такие флаги left middle right drowPoints...

Как передать вектор в параметрах функции класса? - C++
есть функция bool ReadDir(const std::wstring &amp;, const std::wstring&amp; , int, bool,bool , std::vector&lt;std::wstring&gt;&amp;, bool&amp; ); кода...

Ошибка компиляции при неправильных входных параметрах функции - C++
Доброго времени суток, уважаемые форумчане! Возник следующий вопрос. Пусть имеется некоторый класс class MyClass { public: ...

Не могу понять для чего третья переменная в параметрах функции - C++
int binpow (int a, int n) вот это понимаю, а вот этот не могу понять, что означает переменная b? unsigned int binpow(unsigned int a,...

Диапазон значений указателей - C++
Здравствуйте! Подскажите пожалуйста, как узнать ограничения на значение указателей в системе?

Обмен значений между двумя вещественными переменными. - C++
Помогите пожалуйста, решить задачи =))) Разработайте процедуру, которая получает через параметры две вещественные переменные х, у и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
НеСказочник
58 / 46 / 7
Регистрация: 12.11.2012
Сообщений: 343
Записей в блоге: 2
10.02.2014, 02:27     Взаимный обмен значений указателей в параметрах функции #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Ну так ему правильно не понравилось. Указатель
C++
1
A *x
- это по факту адрес в памяти где начинается массив типа A, т.е. адрес первого элемента массива (тот который имеет индекс 0). Если прибавить к нему единицу
C++
1
x += 1;
, то он уже будет указывать на следующий элемент, так как они всегда расположены подряд. присвоение указателей, в данной ситуации, занятие действительно бессмысленной, так как Вы, по факту, ничего не измените. Что где хранилось то там храниться и будет. И по выходу из метода оригиналы указателей на массивы даже не изменятся.

Правильно будет перебрать элементы в цикле, но тогда нужно знать размеры массивов. Можно, например передать размеры третьим параметром. Они всё равно должны быть одинаковые, так что можно ввести один параметр размера для обоих. Откуда взять размер? Очень просто: он известен тому, кто объявит массивы вызовет ваш метод для них.

Добавлено через 3 минуты
Как-то так:

C++
1
2
3
4
5
6
7
8
9
10
11
template <class typename A, class typename B>
void f(A *x, B *y, int ArraySize)
{
    A temp;
    for(int i=0; i<ArraySize; i++)
    {
        temp = x[i];
        x[i] = (A)y[i];
        y[i] = (B)temp;
    }
}
Yandex
Объявления
10.02.2014, 02:27     Взаимный обмен значений указателей в параметрах функции
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru