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

матрица по ссылке - C++

Восстановить пароль Регистрация
 
//Александр
 Аватар для //Александр
6 / 6 / 0
Регистрация: 15.04.2010
Сообщений: 151
20.11.2010, 23:47     матрица по ссылке #1
Я считываю матрицу с файла, и каждый раз когда я вызываю функцию , передается одно и тоже, как ее передать по ссылке так что бы при изменении матрицы в функции она менялась и в маин??



C++
1
2
3
4
5
6
7
8
9
10
11
void fun(char mass[10][10])
{
 
..........................
}
void main()
{
 
char mass[10][10];
fun(mass);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2010, 23:47     матрица по ссылке
Посмотрите здесь:

C++ Переход по ссылке
Вызвать по ссылке C++
матрица по ссылке C++
C++ Передача по ссылке
Агрегация по ссылке C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
21.11.2010, 01:27     матрица по ссылке #2
//Александр, ИСпользовать двойной указатель к примеру...
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
21.11.2010, 01:31     матрица по ссылке #3
C++
1
void fun(char mass[][10])
уже всё передаётся по указателю, внутри функции можно её менять

двойной указатель он не сможет использовать, если матрица автоматическая
в данном случае в функцию передаётся указатель на массив из десяти элементов
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
21.11.2010, 01:34     матрица по ссылке #4
//Александр, а какие проблемы? все и будет меняться замечательно!
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
21.11.2010, 01:36     матрица по ссылке #5
accept, Я это понимаю) Я про динамическое распределение говорил
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
21.11.2010, 01:39     матрица по ссылке #6
ForEveR, а у тебя какие сложности?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
21.11.2010, 01:39     матрица по ссылке #7
Day, Эм. У меня никаких. Я давал совет автору использовать динамическое распределение памяти.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
21.11.2010, 01:44     матрица по ссылке #8
Цитата Сообщение от ForEveR
динамическое распределение памяти
в каком-то другом топе, чтоли ?

при динамическом матрица хранится совсем не так (которая через [i][j] потом используется)
автоматическая матрица хранится в один ряд, и функция, получая указатель, должна знать сколько там колонок в одной строке
одну строку можно рассматривать в виде разных матриц, поэтому двойной указатель не определяет какая из них будет использоваться
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
21.11.2010, 01:45     матрица по ссылке #9
Цитата Сообщение от ForEveR Посмотреть сообщение
//Александр, ИСпользовать двойной указатель к примеру...
Это был совет по использованию вместо статической матрицы. Только и всего. Возможно здесь это не нужно.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
21.11.2010, 01:51     матрица по ссылке #10
у него в main() написано уже

C++
1
char mass[10][10];
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
21.11.2010, 01:52     матрица по ссылке #11
accept, Вижу вижу.
Но во первых это не слишком хорошо (лучше define или константа).
А во вторых... Мне просто больше импонирует использовать указатели, нежели статические массивы. Но собственно я вас понял.
//Александр
 Аватар для //Александр
6 / 6 / 0
Регистрация: 15.04.2010
Сообщений: 151
21.11.2010, 02:35  [ТС]     матрица по ссылке #12
дело в том что когда я передаю так , то в функции массив изменяется а в main он не меняется и при следующем вызове функции передается не измененный массив а тот что передавался первый раз...
C++
1
2
3
4
5
6
7
8
9
10
11
12
 
void fun(char mass[10][10])
{
 
..........................
}
void main()
{
 
char mass[10][10];
fun(mass);
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2010, 07:44     матрица по ссылке
Еще ссылки по теме:

Возвращение по ссылке C++
C++ Передача по ссылке
Возврат по ссылке C++

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

Или воспользуйтесь поиском по форуму:
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
21.11.2010, 07:44     матрица по ссылке #13
а что находится в fun() ?
Yandex
Объявления
21.11.2010, 07:44     матрица по ссылке
Ответ Создать тему
Опции темы

Текущее время: 17:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru