Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
80 / 80 / 14
Регистрация: 27.06.2012
Сообщений: 555
Записей в блоге: 1
1

Передача массива в функцию по ссылке

28.04.2013, 08:45. Показов 3971. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Есть функция:
C++
1
2
3
4
5
void f(int &a)
{
    int *p=&a;
    p[1]=1;
}
Но почему-то при попытке передать ей массив ругается дебаггер:
...|10|error: invalid initialization of non-const reference of type ‘int&’ from an rvalue of type ‘int*’|
Как с этим справиться?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.04.2013, 08:45
Ответы с готовыми решениями:

Передача двумерного массива в функцию по ссылке
Требуется написать функцию, которая выделяет память для одномерного и двумерного динамического...

Передача по ссылке двумерного динамического массива в функцию
Приведите, пожалуйста, пример. Нигде не могу найти.

Передача вектора в функцию по ссылке
Здравствуйте. Как решить эту ошибку. Ошибка: In member function ‘void...

Передача указателя в функцию по ссылке
Доброго времени суток. Может и в заголовке написан бред, но в общем нужно сделать так, чтобы...

4
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
28.04.2013, 08:55 2
В данном случае функция принимает ссылку на int, а вы хотите, чтобы была ссылка на int*:
C++
1
void f(int*& a);
И да - смысла в передаче массива по ссылке в данном случае нет, достаточно принимать int*.
1
80 / 80 / 14
Регистрация: 27.06.2012
Сообщений: 555
Записей в блоге: 1
28.04.2013, 08:57  [ТС] 3
0x10, а когда массивы можно передавать по ссылке?
0
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
28.04.2013, 09:07 4
Да можно-то когда захочется. Вопрос в другом - зачем оно нужно. Сходу и не придумаю. Т.е. понятно, что передавая по ссылке указатель, мы можем изменить его значение, но с тем же успехом можно и вернуть указатель из функции (если память выделена динамически). И вообще - всегда есть std::vector, проще использовать его.
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
29.04.2013, 00:15 5
Как вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
template<typename T, int N>
void foo(T (&arr)[N]){
    for(int i=0;i<N;++i)
        std::cout<<(arr[i]++)<<" ";
    std::cout<<std::endl;
}
 
 
int main(){
    const int size=10;
    int arr[size]={1,4,6,7,4,3,5,6,8,5};
    foo(arr);
    for(int i=0;i<size;++i)
        std::cout<<arr[i]<<" ";
    std::cout<<std::endl;
}
0
29.04.2013, 00:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.04.2013, 00:15
Помогаю со студенческими работами здесь

Передача указателя в функцию по ссылке
Почему невозможно передать указатель в функцию по ссылке? void function(int &amp; (*a)){ ... ......

Передача в функцию по ссылке или указателю
Гуру C++, как предпочтительнее делать?:) void f1(int &amp;a) { a = 5; } void f2(int *...

Передача аргументов в функцию по ссылке и указателю
Чем отличается передача по ссылке от передачи по указателю аргументов в функцию?

Передача параметров в функцию по значению, по ссылке и по указателю
Доброе время суток товарищи программисты. Столкнулся с кучей ошибок в написании простой программы....


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru