Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/22: Рейтинг темы: голосов - 22, средняя оценка - 4.91
19 / 19 / 18
Регистрация: 25.08.2014
Сообщений: 186
1

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

08.12.2014, 12:55. Показов 4134. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите пожалуйста, как передать массив в функцию по ссылке? Мне нужно чтобы после вызова функции в переданном массиве изменился порядок элементов.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.12.2014, 12:55
Ответы с готовыми решениями:

Передача параметров в функцию по ссылке
Интересует функция в 70 строчке и её вызов в 113. Почему нужно параметры передавать по ссылке?(если...

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

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

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

6
Модератор
771 / 352 / 142
Регистрация: 17.07.2013
Сообщений: 992
08.12.2014, 15:11 2
Wiiiiijjj,
Javascript
1
2
3
4
5
6
7
8
var arr = [1,2,3,4,5];
// параметры в функции вроде и так по ссылке передаются
function changeArr(arr) {
   arr.reverse();
}
 
changeArr(arr);
console.log(arr); // [5,4,3,2,1]
1
19 / 19 / 18
Регистрация: 25.08.2014
Сообщений: 186
08.12.2014, 17:24  [ТС] 3
Thisman, почему-то не робит, в чем ошибка тогда?
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function reverseArr(a) {
    var b = [];
    for (var i = 0; i < a.length; ++i)
        b[a.length - i - 1] = a[i];
    return b;
}
 
function reverseThisArr(a) {
    a = reverseArr(a);
}
 
var a1 = [1, 2, 3];
var a2 = [true, false, true, false, true, false];
var a3 = [0.12452, '9347kk', 88882, reverseArr];
 
console.log(reverseArr(a1));
console.log(reverseArr(a2));
console.log(reverseArr(a3));
 
reverseThisArr(a1);
reverseThisArr(a2);
reverseThisArr(a3);
 
console.log(a1);
console.log(a2);
console.log(a3);
0
19 / 19 / 18
Регистрация: 25.08.2014
Сообщений: 186
09.12.2014, 22:01  [ТС] 4
Ап! Так и не смог понять
0
Просто любитель
626 / 464 / 120
Регистрация: 20.01.2011
Сообщений: 865
Записей в блоге: 2
10.12.2014, 00:08 5
Wiiiiijjj, чтобы что-то менялось, его нужно менять. Переданный массив вы не меняете. А вот так все работает:
Javascript
1
2
3
4
5
6
7
function reverseArr(a) {
  var b = a.slice( ); // копируем массив
  for (var i = 0; i < a.length; ++i) {
    a[a.length - i - 1] = b[i];
  }
  return b;
}
1
19 / 19 / 18
Регистрация: 25.08.2014
Сообщений: 186
10.12.2014, 12:31  [ТС] 6
GuardCat, спасибо, а почему нельзя просто переприсвоить, как здесь?
Javascript
1
2
3
function reverseThisArr(a) {
    a = reverseArr(a);
}
0
Просто любитель
626 / 464 / 120
Регистрация: 20.01.2011
Сообщений: 865
Записей в блоге: 2
10.12.2014, 13:01 7
Wiiiiijjj, в вашей функции происходит следующее:

1. Присвоить переменной "а" ссылку на массив.
2. Присвоить переменной "a" ссылку на другой массив.

Соответственно, первоначальный массив не меняется, меняется содержимое переменной.

Например:

Javascript
1
2
3
4
5
6
7
8
9
10
var 
  a = [0, 1, 2], 
  b = [2, 1, 0], c
;
 
c = a; // Теперь в "c" содержится ссылка на массив "a"
c = b; // Теперь в "c" содержится ссылка на массив "b". Массив в "a" не изменился
 
console.log( c ) // [2, 1, 0]
console.log( a ) // [0, 1, 2]
Но при этом, можно менять элементы массива:

Javascript
1
2
3
4
5
6
7
8
var 
  a = [0, 1, 2], 
  b = [2, 1, 0], c
;
 
c = a; // Теперь в "c" содержится ссылка на массив "a"
c[0] = 10; // А вот теперь поменялся первый элемент массива "a". Если сделать это в цикле, можно поменять каждый элемент массива, на который ссылается "c"
console.log( a[0] ) // 10
1
10.12.2014, 13:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.12.2014, 13:01
Помогаю со студенческими работами здесь

Передача параметров по ссылке
У кого есть рабочий вариант сего чуда ? (К примеру,функции квадратного корня).В учебнике не...

Передача параметров по ссылке
Стоит ли передавать все параметры (кроме скалярных и указателей) по сслыке? Т.е. вместо void ...

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

Передача параметров по ссылке
Допустим, есть ф-я: int foo() { } Хотелось бы чтобы она изменяла значение, передаваемое...


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

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