Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Обмен ссылками на массив

1.6K
14 октября 2007 года
Shtirlitz
145 / / 31.07.2006
Здравствуйте. Возникла задача следующего плана. Имеются 2 массива(mas,dopmas). Насколько мне известно в Си имя массива является ссылкой на первый элемент массива. Необходимо чтобы массив mas ссылался на dopmas и наоборот. Т.е. грубо говоря обменять значениями 2 массива. Сразу же оговорюсь что простое копирование массивов меня не устраивает. Необходимо именно обменять местами ссылки. Чтобы mas ссылался на первый эл-нт dopmas и наоборот. Я пытался сделать это следующим образом:
 
Код:
int* temp;
temp=mas;
mas=dopmas;
dopmas=temp;


Но VS2005 выдает ошибку
Цитата:
error C2106: '=' : left operand must be l-value
error C2440: '=' : cannot convert from 'int *' to 'int [16]'


Подскажите что делать? Заранее благодарен.

350
14 октября 2007 года
cheburator
589 / / 01.06.2006
1. Вообще-то, надо приводить более полный код.
2. Имя массива является не ссылкой, а константным указателем на первый элемент.
Я так полагаю, mas и dopmas объявлены как массивы int, что-то вроде того?
 
Код:
int mas[100];
int dopmas[200];

В таком случае, переменной mas нельзя что-то присвоить. mas интерпретируется как
 
Код:
int * const mas;

Здесь выход такой:
Код:
int mas[100];
int dopmas[200];

// Какая-то функция
int *array1 = mas;
int *array2 = dopmas;
// Теперь надо поменять местами
int *tmp = array1;
array1 = array2;
array2 = tmp;

// Можно проще:
swap(array1, array2);
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог