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

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

Восстановить пароль Регистрация
 
//Александр
 Аватар для //Александр
6 / 6 / 0
Регистрация: 15.04.2010
Сообщений: 151
21.11.2010, 01:19     матрица по ссылке #1
как передать матрицу 15*15 в функцию по ссылке
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2010, 01:19     матрица по ссылке
Посмотрите здесь:

C++ Переход по ссылке
Вызвать по ссылке C++
C++ матрица по ссылке
C++ Передача по ссылке
Агрегация по ссылке C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
21.11.2010, 01:31     матрица по ссылке #2
C
1
2
3
4
5
6
7
8
9
10
typedef M[15][15]  m15
f(*m15)
{
....
}
main()
{
...
  f(&m15);
}
Добавлено через 1 минуту
Но вобще-то вопрос не так прост, как кажется...
volovzi
266 / 168 / 8
Регистрация: 14.03.2010
Сообщений: 501
21.11.2010, 01:57     матрица по ссылке #3
Переменная массива (в т.ч. двумерного) уже сама по себе является указателем, поэтому брать адрес не нужно:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
void function (int m[15][15]) {
    m[0][0] = 17;
}
 
int main (int argc, const char * argv[]) {
    int m[15][15];
    
    function(m);
    
    printf("%d\n", m[0][0]); // 17
    
    return 0;
}
Но так лучше не делать, потому что если изменится размер матрицы, то придётся переписывать и все функции для работы с ней, поэтому лучше использовать динамическую память.

P.S. Не уточнил, язык Си или Си++?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
21.11.2010, 02:06     матрица по ссылке #4
volovzi, Ну или хотя бы использовать define если в Си
volovzi
266 / 168 / 8
Регистрация: 14.03.2010
Сообщений: 501
21.11.2010, 02:09     матрица по ссылке #5
ForEveR, не говори это страшное слово .
//Александр
 Аватар для //Александр
6 / 6 / 0
Регистрация: 15.04.2010
Сообщений: 151
21.11.2010, 02:58  [ТС]     матрица по ссылке #6
C++
1
void function (int m[15][15])
если передавать так то массив в main не изменится , и при следущем вызове функции передастся исходный массив а не измененный

Добавлено через 4 минуты
или как передать ссылку на одномерный массив (мне важно что бы он изменялся и в main и в функции) размер фиксированый
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
21.11.2010, 08:17     матрица по ссылке #7
значит ты его просто не меняешь в функции
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2010, 12:07     матрица по ссылке
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
volovzi
266 / 168 / 8
Регистрация: 14.03.2010
Сообщений: 501
21.11.2010, 12:07     матрица по ссылке #8
//Александр, ещё раз внимательно посмотри мой пример. Можешь даже его запустить и поковырять. Значение указателя "m" ты действительно поменять не можешь. Но значения, лежащие по адресам "m[i][j]" меняются прекрасно.
Yandex
Объявления
21.11.2010, 12:07     матрица по ссылке
Ответ Создать тему
Опции темы

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