Перейти к содержимому

Как сохранить массив в переменную

  • автор:

Можно ли сохранить значение элемента массива в переменную? C#

Требуется, чтобы значение элемента массива сохранялось в переменную, но чтобы оно после этого не зависило от самого массива. Возможно ли это реализовать с помощью массива? Или придётся использовать что-то другое?
P.S. Это нужно, чтобы можно было после выведения числа и сохранения его значения в переменную, удалить само число из массива. Ведь если мы просто заставим переменную прочитать число массива, а затем его удалим, то переменная не сохранит его значение, т. к. его уже нет в массиве, верно?

Лучший ответ

Что вас смущает в описанной схеме?
массив и переменная разные и независимые области памяти
Если вы обнуляете (или удаляете элемент списка), то это не повлияет на переменную, в которой вы что-то сховали и не удалили её.
Как происходит обмен значениями в элементах массива? Через буфер buf=a[i]; a[i]=a[k]; a[k]=buf;

ParityУченик (163) 5 лет назад

То есть, если я из массива public int[] a = new int[52];
выведу элемент [7], скажем, int v1 = а [7]
а потом удалю его из массива, то значение переменной сохранится как 7 и не поменяется на пустое?

Алекс Куха Высший разум (438723) У элемента массива есть два свойства — значение — индекс Вы сохранили один из них Что такое «удалю его из массива» непонятно. Опять же есть два варианта — значение элемента заменяется — изменяется размерность массива путём сдвига всех значений > 7 влево на один элемент

Остальные ответы

не, не верно.
пока сборщик мусора не поработает, всё будет доступно.
а сборщик не поработает, пока есть хоть одна ссылка на объект.

ParityУченик (163) 5 лет назад

То есть, если я из массива public int[] a = new int[52];
выведу элемент [7], скажем, int v1 = а [7]
а потом удалю его из массива, то значение переменной сохранится как 7 и не поменяется на пустое?

Аглая Шниц Искусственный Интеллект (127807) конечно, нет. там же не объекты, а ссылки на объекты. ссылка a[7] грохнется, ссылка v1 останется.

На самом деле «сохранения» при присваивании не происходит вообще.
Если на пальцах, то при присваивании переменной элемента массива происходит конструирование нового объекта, который создан на основе элемента массива.

Например, если переменная и элемент массива — числа, то при присваивании может происходить преобразование допустим целого в вещественное. Или если оба они объекты, то может быть вызван оператор присваивания или конструктор копирования.

Таким образом после присваивания переменная и объект независимы. Но тут есть тонкий момент, если до присваивания переменная имела значение, то ссылка на него направляется в сборщик мусора, который когда-нибудь удалит значение, точнее освободит память, занятую значением.

В одной из последних версий С# были специальные переменные-ссылки, но скорее всего их нельзя использовать для указания на элемент массива. Хотя я это не проверял.

ParityУченик (163) 5 лет назад
Спасибо большое, самый понятный ответ.

Алексей Кузьминов Мудрец (11122) Я забыл сказать про ссылочные типы См. тут В этом случае элементы не копируются, а создаётся ещё одна ссылка. Для различия объектов которые равны по значению от одинаковых объектов использует метод ReferenceEquals

Mr. Perfectly FineОракул (62997) 5 лет назад

Переменные-ссылки можно использовать для указания на элемент массива (см. Ref returns and locals):
https://blogs.msdn.microsoft.com/dotnet/2017/03/09/new-features-in-c-7-0/

Дед МазайГений (58121) 5 лет назад

> может быть вызван оператор присваивания или конструктор копирования
Неверно. Это C#, а не C++. Оператор = для объектов — это всегда копирование ссылки на объект.

бебрик паребрикПрофи (556) 10 месяцев назад

Получается, что ссылаться на элемент массива без ключевого слова ref невозможно? Даже если это массив элементов какого-либо ссылочного типа данных? Как-то странно было столкнуться с такой проблемой самому. Массив — ссылочный тип и его элементы, что он хранил в моём случае принадлежали к ссылочному типу. При этом без ref я не мог получить ссылку на них, а лишь копировал значение присваиванием к другой переменной.
Ответу 5 лет, но не суть.

Преобразовать массив в переменную

Из массива охота получить переменную, в которой все значения записаны через запятую. Что-то вроде:

// PHP echo $devki; // HTML маша,лена,оля,юля 
  1. посчитать кол-во элементов массива;
  2. в цикле приравнять к одной переменной ее + новый элемент;
  3. поскольку в п.2. добавляется запятая в конец — обрезать последний символ.

Прошу подсказать, есть ли вариант быстрее, лучше?

Отслеживать

51.4k 86 86 золотых знаков 267 267 серебряных знаков 505 505 бронзовых знаков

Как сохранить js массив в файл

Чтобы сохранить js массив в файл, нужно воспользоваться модулем для работы с файловой системой fs , который входит в стандартную библиотеку Node.js.

// импортируем модуль для работы с файловой системой import fs from 'fs'; // массив, который мы хотим сохранить в файл const array = [1, 2, false, 'hello world', ['nested array'],  1: 'nested object' >]; // для записи в файл воспользуемся синхронной функцией fs.writeFileSync() fs.writeFileSync('fileWithArray.txt', JSON.stringify(array), 'utf-8'); 

Первым параметром функция принимает путь до файла в виде строки (в кавычках), вторым — данные, которые хотим записать в файл, третьим — кодировку. Обратите внимание, что для записи мы преобразуем наш массив в JSON строку с помощью метода JSON.stringify() , это особенность работы fs.writeFileSync() с массивами.

После выполнения коды мы получим файл fileWithArray.txt , в котором будет сохранен наш массив:

УРОК 16. ХРАНЕНИЕ ЗНАЧЕНИЙ В МАССИВАХ

Как вы уже знаете, ваши программы во время выполнения хранят информацию в переменных. До сих пор каждая переменная в программе хранила только одно значение в каждый момент времени. Однако в большинстве случаев программам необходимо хранить множество значений, например 50 тестовых очков, 100 названий книг или 1000 имен файлов. Если вашим программам необходимо хранить несколько значений, они должны использовать специальную структуру данных, называемую массивом. Для объявления массива необходимо указать имя, тип массива и количество значений, которые массив будет хранить. Этот урок описывает, как программы объявляют массивы, а затем сохраняют и обращаются к информации, содержащейся в массиве. К концу данного урока вы освоите следующие основные концепции:

  • Массив представляет собой структуру данных, которая позволяет одной переменной хранить несколько значений.
  • При объявлении массива вы должны указать тип значений, хранящихся в массиве, а также количество значений (называемыхэлементами массива).
  • Все элементы внутри массива должны быть одного и того же типа, например, int, float или char.
  • Для сохранения значения внутри массива вам следует указать номер элемента массива, в котором вы хотите сохранить свое значение.
  • Чтобы обратиться к значению, хранящемуся внутри массива, ваши программы указывают имя массива и номер элемента.
  • При объявлении массива программы могут использовать оператор присваивания для инициализации элементов массива.
  • Программы могут передавать переменные-массивы в функции точно так же, как они передают любой другой параметр.

Программы на C++ широко используют массивы. Когда в уроке 17 вы начнете работать с символьными строками (например, название книги, имя файла и т. д.), вы будете оперировать массивами символов.

ОБЪЯВЛЕНИЕ ПЕРЕМЕННОЙ МАССИВА

Массив представляет собой переменную, способную хранить одно или несколько значений. Подобно переменным, используемым вашими программами до сих пор, массив должен иметь тип (например, inl, charили float) и уникальное имя. В дополнение к этому вам следует указать количество значений, которые массив будет хранить. Все сохраняемые в массиве значения должны быть одного и того же типа. Другими словами, ваша программа не может поместить значения типа float, char и long водин и тот же массив. Следующее объявление создает массив с именемtest_scores, который может вмещать 100 целых значений для тестовых очков:

int test_scores [100] ; //——> Размер массива

Когда компилятор C++ встречает объявление этой переменной, он распределит достаточно памяти для хранения 100 значений типа int.Значения, хранящиеся в массиве, называются элементами массива.

Массивы хранят несколько значений одного и того же типа

По мере усложнения вашим программам потребуется работать с несколькими значениями одного и того же типа. Например, программы могут хранить возраст 100служащих или стоимость 25 акций. Вместо того чтобы заставлять программу работать со 100 или с 25переменными с уникальными именами, C++ позволяет вам определить одну переменную — массив —, которая может хранить несколько связанных значений.

Для объявления массива вы должны указать тип и уникальное имя массива, а также количество элементов, которые будет содержать массив. Например, следующие операторы объявляют три разных массива:

float part_cost[50];
int employee_age[100];
float stock_prices[25];

Обращение к элементам массива

Как вы уже знаете, массив позволяет вашим программам хранить несколько значений в одной и той же переменной. Для обращения к определенным значениям, хранящимся в массиве, используйте значение индекса, которое указывает на требуемый элемент. Например, для обращения к первому элементу массива test_scores вы должны использовать значение индекса 0. Для обращения ко второму элементу используйте индекс 1. Подобно этому, для обращения к третьему элементу используйте индекс 2. Как показано на рис. 16.1, первый элемент массива всегда имеет индекс 0, а значение индекса последнего элемента на единицу меньше размера массива:

Рис. 16.1. Как C++ индексирует элементы массива.

Важно помнить, что C++ всегда использует 0 для индекса первого элемента массива, а индекс последнего элемента на единицу меньше размера массива. Следующая программа ARRAY. CPP создает массив с именем values, который вмещает пять целочисленных значений. Далее программа присваивает элементам значения 100, 200, 300, 400 и 500:

Как видите, программа присваивает первое значение элементу 0 (values[0]). Она также присваивает последнее значение элементу 4 (размер Массива (5) минус 1).

Использование индекса для обращения к элементам массива

Массив позволяет вашим программам хранить несколько значений внутри одной и той же переменной. Для обращения к определенному значению внутри массива программы используют индекс. Говоря кратко, значение индекса указывает требуемый элемент массива. Все массивы C++ начинаются с элемента с индексом 0.Например, следующий оператор присваивает значение 100первому элементу массива с именем scores:

scores[0] = 100;

Когда ваша программа объявляет массив, она указывает количество элементов, которые массив может хранить. Например, следующий оператор объявляет массив, способный хранить 100 значений типа int.

В данном случае массив представляет собой элементы отscores[0] до scores[99].

Использование индексной переменной

Если ваши программы используют массив, обычной операцией является использование индексной переменной для обращения к элементам массива. Например, предположим, что переменная / содержит значение 3,следующий оператор присваивает значение 400 элементу values[3J:

Следующая программа SHOWARRA.CPP использует индексную переменную i внутри цикла for для вывода элементов массива. Цикл for инициализирует i нулем, так что программа может обращаться к элементуvalues[O]. Цикл for завершается, когда i больше 4 (последний элемент массива):

#include

void main (void)

int values[5]; // Объявление массива int i;
values[0] = 100;
values[1] = 200;
values[2] = 300;
values[3] = 400;
values[4] = 500;
cout for (i = 0; i >

Каждый раз, когда цикл for увеличивает переменную i, программа может обратиться к следующему элементу массива. Экспериментируйте с этой программой, изменяя цикл for следующим образом:

В данном случае программа будет выводить элементы массива от большего к меньшему.

ИНИЦИАЛИЗАЦИЯ МАССИВА ПРИ ОБЪЯВЛЕНИИ

Как вы уже знаете, C++ позволяет вашим программам инициализировать переменные при объявлении. То же верно и для массивов. При объявлении массива вы можете указать первоначальные значения, поместив их между левой и правой фигурными скобками, следующими за знаком равенства. Например, следующий оператор инициализирует массив values:

Подобным образом следующее объявление инициализирует массив с плавающей точкой:

Если вы не указываете первоначальное значение для какого-либо элемента массива, большинство компиляторов C++ будут инициализировать такой элемент нулем. Например, следующее объявление инициализирует первые три из пяти элементов массива:

Программа не инициализирует элементы values[3] и values[4]. В зависимости от вашего компилятора, эти элементы могут содержать значение 0. Если вы не указываете размер массива, который вы инициализируете при объявлении, C++ распределит достаточно памяти, чтобы вместить все определяемые элементы. Например, следующее объявление создает массив, способяый хранить четыре целочисленных значения:

ПЕРЕДАЧА МАССИВОВ В ФУНКЦИИ

Ващи программы будут передавать массивы в функции точно так же, как и любые другие переменные. Функция может инициализировать массив, прибавить к массиву значения или вывести элементы массива на экран. Когда вы передаете массив в функцию, вы должны указать тип массива. Нет необходимости указывать размер массива. Вместо этого вы передаете параметр например number_of_elements, который содержит количество элементов в массиве:

void some_function(int array[], int number_of_elements);

Следующая программа ARRAYFUN.CPP передает массивы в функциюshow_array, которая использует цикл for для вывода значений массивов:

#include

void show_array (int array [] , int number_of_elements)

int i;
for (i = 0; i cout >

void main(void)

int little_numbers[5] =;
int big_numbers[3] = < 1000, 2000, 3000 >;
show_array(little_numbers, 5);
show_array(big_numbers, 3);
>

Как видите, программа просто передает массив в функцию по имени, а также указывает параметр, который сообщает функции количество элементов, содержащихся в массиве:

Следующая программа GETARRAY.CPP использует функцию get_values, ч тобы присвоить три значения массиву numbers:

Как видите, программа передает массив в функцию по имени. Функция в свою очередь присваивает массиву элементы. Из урока 10 вы узнали, что, пока ваша программа не передаст параметры в функцию с помощью адреса, функция не может изменить эти параметры. Однако, как можно заметить в данном случае, функция get_values изменяет параметр-массивnumbers. Как вы узнаете из урока 20, C++ действительно передает массивы в функцию, используя указатели. Таким образом, функция может изменить элементы массива, если ей это нужно.

ЧТО ВАМ НЕОБХОДИМО ЗНАТЬ

Из этого урока вы узнали, что ваши программы могут хранить несколько значений одного и того же типа внутри массива. Программы на C++широко используют массивы. Из урока 17 вы узнаете, что программы могут использовать массивы для хранения символьных строк. До изучения урока 17 убедитесь, что вы освоили следующие основные концепции:

  1. Массив представляет собой переменную, которая может хранить одно или несколько значений одного и того же типа.
  2. Для объявления массива вам следует указать тип, имя массива, а также количество значений, хранящихся в массиве.
  3. Значения внутри массива называются элементами массива.
  4. Первый элемент массива хранится как элемент 0(array[OJ), индекс последнего элемента массива на единицу меньше размера массива.
  5. Программы часто используют индексные переменные для обращения к элементам массива.
  6. Если функция воспринимает массив как параметр, она должна указать тип и имя, но не размер массива.
  7. Если программа передает массив в функцию, она, как правило, передает и параметр, который сообщает функции количество элементов содержащихся в массиве.
  8. Так как C++ передает массив в функцию с помощью адреса массива функция может изменять значения, содержащиеся в массиве.

Случайные статьи

  • Рассылка. Выпуск 245
  • Как открыть новую страницу в новом окне браузера?
  • Рассылка. Выпуск 165
  • Если бы языки программирования…
  • Функция с переменным количеством параметров
  • Перенос сайта с мегагруп
  • Как сбросить БИОС (BIOS) на ноутбуке Sony.
  • Через какой порт лучше управлять шаговым двигателем?
  • В чем преимущество @Styles.Render(«~/Content/css»)
  • Обновить иконки в трее

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *