Форум программистов, компьютерный форум, киберфорум
Наши страницы

Как получить ссылку на указатель или указатель на указатель в массиве? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ класс для создания календаря http://www.cyberforum.ru/cpp-beginners/thread1031633.html
помогите пожалуйста создать класс для определения дня недели по календарной дате. Дата – три целых числа: число, месяц, год. Диапазон дат – по меньшей мере, два тысячелетия. (Демонстрация применения)
C++ Система счисления Когда делиться а когда умножаются при переводе из одной системы счисления в другую. http://www.cyberforum.ru/cpp-beginners/thread1031629.html
C++ Структура
Мне дана вот такая задача написать программу на : Пункт обмена валюты состоит из таких элементов как : имя точки обмена валюты, курс покупки, курс продажи, адрес пункта, а также телефона. Надо...
Поиск совершенного числа в массиве C++
Необходимо найти в массиве все совершенные числа в диапазоне от n1 до n2. Будем учитывать, что массив уже заполнен. //задаём диапазон исследуемых элементов cout<<"Введите n1 = "; cin>>n1;...
C++ Считать длину строки текстового файла http://www.cyberforum.ru/cpp-beginners/thread1031583.html
Есть квадратная матрица, которая заполняется данными из файла. Если размерность матрицы больше, чем объём данных в файле, то нужно заполнить недостающие элементы матрицы случайными числами. Пытаюсь...
C++ Где ошибка? Вот условие -"Ученик на свой ​​день рождения раздал ученикам класса конфеты, в том числе и себе. Ребятам давал четное количество, а девушкам нечетное количество. Подсчитать количество девушек и... подробнее

Показать сообщение отдельно
valera0006
0 / 0 / 0
Регистрация: 12.06.2012
Сообщений: 4

Как получить ссылку на указатель или указатель на указатель в массиве? - C++

07.12.2013, 10:07. Просмотров 1191. Ответов 6
Метки (Все метки)

В процессе реализации сортировки пузырьком натолкнулся на такую проблему: как поменять значения указателей, передаваемых в функцию. Если задать указатели прямо, то можно поменять их значения и по ссылке и по указателю на указатель:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void Swap1(char** first, char** second ){
    char* temp = *first;
    *first = *second;
    *second = temp;
}
void Swap2(char* &first, char* &second )
{
    char* temp = first;
    first = second;
    second = temp;
}
void main(){ 
 
    char a = 'a';
    char b = 'b';
 
    char* pa = &a;
    char* pb = &b;
    
    Swap1(&pa, &pb); //or
    Swap2(pa, pb);
}
таким образом, если объекты - не char, а гораздо большие по объему, то такой обмен будет более быстрым, нежели обмен присваиваниями по значению.

Вопрос, как обращаться к функции swap или swap2 (лучше через ссылки) в цикле прохода по массиву? У меня код:
void main()
C++
1
2
3
4
5
6
7
8
9
10
{ 
        
    char* mas = new char[3];
    mas[0] = 'a'; mas[1] = 'b'; mas[2] = '\0';
 
    char* a = &(mas[0]);
    char* b = &(mas[1]);
    //предположим, где-то в цикле
    Swap2(mas, &(mas[1]));
}
выдает ошибку " error C2664: 'Swap2' : cannot convert parameter 2 from 'char *' to 'char *&' ", т. е. ссылка таким образом не объявляется? Хотя, mas вроде подходит..

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