Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 10.07.2015
Сообщений: 27

Почему перезаписываются данные?

21.10.2018, 19:38. Показов 772. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подкинули очень простенькую программу, но я не могу понять, почему данные в памяти, сохраненные под переменной globalArray перезаписываются в методе BubbleSort. Я ведь не присваиваю результат сортировки к этой переменной. Может кто-нибудь объяснить как это происходит? При вызове метода мы отправляем копию изначального массива для обработки. Эту копию мы ни чему не присваиваем

C#
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
27
28
29
30
31
32
33
34
35
36
37
38
static void Main(string[] args)
{
    Console.OutputEncoding = Encoding.UTF8;
    int[] globalArray = new int[] { 9, 8, 7, 6, 5, 4, 3, 2, 1 };
 
    Console.WriteLine("Числа, которые считаем: ");
    Display(globalArray);
    BubbleSort(globalArray);
    Display(globalArray);
}
 
static public void Display(int[] massiv)
{
    foreach (int m in massiv)
        Console.Write(m + " ");
    Console.WriteLine();
}
 
static public int[] BubbleSort(int[] massiv)
{
    int k;
    int score = 0;
    for (int i = 0; i < massiv.Length-1; i++)
    {
        for (int j = i + 1; j < massiv.Length; j++)
        {
            if (massiv[i] > massiv[j])
            {
                k = massiv[i];
                massiv[i] = massiv[j];
                massiv[j] = k;
 
                score++;
            }
        }
    }
    return massiv;
}
Что получаю на выходе:
Code
1
2
3
Числа,которые считаем:
9 8 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8 9
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.10.2018, 19:38
Ответы с готовыми решениями:

Не перезаписываются данные в бд
Здравствуйте. Возникла такая проблема. Ранее создал таблицу в бд для добавления новостей. В дальнейшем создал таблицу category , чтобы...

Не перезаписываются данные в БД
&lt;? switch($act){ // Пользователи case&quot;modify_users&quot;: switch($do) { default: echo&quot;&lt;li&gt; &lt;a...

Почему перезаписываются предыдущие экземляры
Проблема в том что всем предыдущим полям присваивается значение последнего(надеюсь что ясно выразился) Вот код: #include...

2
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
21.10.2018, 19:42
Цитата Сообщение от Chebyraw Посмотреть сообщение
При вызове метода мы отправляем копию изначального массива для обработки.
Нет. Вы не передаете копию массива. Вы передаете исходный массив.
Все параметры ссылочного типа передаются клонированием ссылки, но не самого объекта. Сам объект передается тот же.
Array - это ссылочный тип.
0
1 / 1 / 0
Регистрация: 10.07.2015
Сообщений: 27
21.10.2018, 19:59  [ТС]
Storm23, с этим разобрался, спасибо. А каким образом тогда можно сохранить оригинальный массив?

Добавлено через 5 минут
Вот, я думал, что в этом случае у нас идет передача по значению. А для передачи по ссылке нужны были бы модификатора ref и out. Что делать же с массивом пока думаю

Добавлено через 5 минут
https://docs.microsoft.com/ru-... -arguments
Нашел об этом.

Также понял, что для сохранения оригинала можно сделать вторую переменную-копию через метод Array.Copy()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.10.2018, 19:59
Помогаю со студенческими работами здесь

Pythonanywhere не перезаписываются данные в файле
Создал вебхук на Flask для телеграм бота. Задача написать бота, который выдаёт ДЗ. Храню на pythonanywhere index() @app.route('/',...

Не перезаписываются ссылки
Добрый вечер! помоги, пожалуйста. Вычитываю из файла значения, и хочу переписать вектор ссылок на новый. Но! когда встаю в отладке на...

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

Access иногда не сохранят данные с формы в БД (Данные>Источник строк ).почему?
Здравсвуйте! Вот такая проблема.... На главное форме в Access расположены вкладки, через которые пользователь в текстовые поля и поля...

Удалить данные из вектора (игра в города) - не могу понять, почему данные остаются в векторе?
Ребят, почему так выводит(все время первый город вектора)? vector&lt;string&gt; wcities; vector&lt;string&gt; Bot::Insert(string...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru