Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> передача массива по ссылке, как передать массив в функцию по ссылке 
:(
    Опции темы
pepelaz
Дата 1.4.2007, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.12.2006

Репутация: нет
Всего: нет



Код

 bool proverka(int a,int b[])
{   int i;
    bool flag;
    i=0;
 while (i<3)
 {if (a==b[i])
 {flag = 1;}  

 else {flag= 0;} 
 i++;
 }


все работает , но как массив b передать не по значению , а по ссылке.Подскажите пожалуйста недавно только c++ учу .никак не разберусь с этой ерундой
PM MAIL   Вверх
Daevaorn
Дата 1.4.2007, 15:30 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Ты передешь и так по указателю, поэтомы ссылка тут не нужна
PM MAIL WWW   Вверх
JAnty
  Дата 1.4.2007, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 6.12.2004
Где: Москва

Репутация: 1
Всего: 2



 bool proverka(int a,int *b);
 bool proverka(int a,int b[8]);
 bool proverka(int a,int b[]);

Всё одно и тоже.


--------------------
Русский справочник по WinAPI

Возможно всё, что возможно вообразить! Это и значит быть гением как я!
PM MAIL   Вверх
vinter
Дата 1.4.2007, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(JAnty @  1.4.2007,  15:40 Найти цитируемый пост)
Всё одно и тоже.

не совсем smile 


--------------------
Мой блог
PM MAIL WWW   Вверх
pepelaz
Дата 1.4.2007, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.12.2006

Репутация: нет
Всего: нет



Код

while  (i<3) /*есть елементы в послудовательности*/
   
   {
       if (  proverka(x[i],y)==0 ) /*if x[i] нет в y засовываем его туда*/
          {y[j]=x[i];
           j++;
           i++;
          
          }       
   else i++; /*есть в y не засовываем*/
       
       
    }

proverka выполняется для  одного и того же  массива который был считан вначале, а должена по идее выполнятся для массива с обновленными значениями
PM MAIL   Вверх
sisbkoshup
Дата 1.4.2007, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 13.2.2007

Репутация: -6
Всего: нет



Имя массива и есть ссылка на первый элемент! Причем константная, поэтому нелбзя массивы присваивать друг другу в с++!!!
Т.ч. Любой массив передается по ссылке!

_________________

 smile 

Это сообщение отредактировал(а) sisbkoshup - 1.4.2007, 21:10
PM MAIL   Вверх
BreakPointMAN
Дата 1.4.2007, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: 14
Всего: 24



Цитата(sisbkoshup @  1.4.2007,  22:09 Найти цитируемый пост)
Имя массива и есть ссылка на первый элемент!

Кто тебе сказал такую глупость?


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
Xenon
Дата 1.4.2007, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



Константная ссылка - это некий новый элемент языка?


--------------------
user posted image  
PM MAIL   Вверх
sisbkoshup
Дата 1.4.2007, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 13.2.2007

Репутация: -6
Всего: нет



Цитата(BreakPointMAN @ 1.4.2007,  21:16)
Цитата(sisbkoshup @  1.4.2007,  22:09 Найти цитируемый пост)
Имя массива и есть ссылка на первый элемент!

Кто тебе сказал такую глупость?

Набей код:

Код

int a[10]; 
for (i=0; i<10; ++i)
  a[i]=i;
cout<<2[a];



И посмотри что будет!

или если угодно: 

Код

  int *p;
  int a[10];
  p=&a[0];
  for (int i=0; i<10; ++i)
     *(p++)=i;
  cout<<a[2];



a[2]~*(a+2)~2[a]!!!!!!!!!!

И на конец попробуй присвоить массивы друг другу!!!
Это говорят на лекциях в РГУ!!!



_____________________


 smile 




Это сообщение отредактировал(а) sisbkoshup - 1.4.2007, 21:42
PM MAIL   Вверх
Xenon
Дата 1.4.2007, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



sisbkoshup, я тебе про то, что это не ссылка, а указатель константный.

Это сообщение отредактировал(а) Xenon - 1.4.2007, 21:30


--------------------
user posted image  
PM MAIL   Вверх
apook
Дата 1.4.2007, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



Цитата

Имя массива и есть ссылка на первый элемент!

Цитата

имя массива является синонимом расположения его начального элемента

Цитата

Можно производить следующие операции с указателями:
1. Присваивание значения указателя другому указателю того же типа
2. Сложение и вычитание указателя и целого
3. Вычитание и сравнение двух указателей, указывающих на элементы одн
   ого и того же массива,
4. Присваивание указателю нуля и сравнение указателя с нулем.

Других операций с указателями производить не допускается!

Нельзя складывать два указателя, перемножать их,  делить,  сдвигать,
выделять разряды;
указатель нельзя складывать со значением типа float или double;
указателю одного типа нельзя даже присвоить указатель другого  типа,
не выполнив предварительно операции приведения ( исключение составл
яют лишь указатели типа void * ). 




Это сообщение отредактировал(а) apook - 1.4.2007, 21:45


--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
sisbkoshup
Дата 1.4.2007, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 13.2.2007

Репутация: -6
Всего: нет



Базара ноль указатель!!! 
PM MAIL   Вверх
Xenon
Дата 1.4.2007, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



Хотя Страуструп пишет, что:
Код

int arr [] = {1,4,3};
int* pTr = arr; //Неявное преобразования int[] в int*

Получается не вполне корректно называть arr констатным указателем?


--------------------
user posted image  
PM MAIL   Вверх
sisbkoshup
Дата 1.4.2007, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 13.2.2007

Репутация: -6
Всего: нет



Вполне корректно! Почему нет?
PM MAIL   Вверх
Xenon
Дата 1.4.2007, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



sisbkoshup, просто такое неявное преобразование массива в указатель при вызове функции приводит к потере размера массива, значит не совсем одно и тоже ...


--------------------
user posted image  
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0960 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.