Разница между указателем и массивом

Разница между указателем и массивом
Разница между указателем и массивом

Видео: Разница между указателем и массивом

Видео: Разница между указателем и массивом
Видео: #31. Указатели на массивы | Язык C для начинающих 2024, Ноябрь
Anonim

Указатель против массива

Указатель - это тип данных, который содержит ссылку на ячейку памяти (т. е. переменная-указатель хранит адрес ячейки памяти, в которой хранятся некоторые данные). Массивы являются наиболее часто используемой структурой данных для хранения набора элементов. Большинство языков программирования предоставляют методы для простого объявления массивов и доступа к элементам массивов.

Что такое указатель?

Указатель - это тип данных, в котором хранится адрес ячейки памяти, в которой хранятся некоторые данные. Другими словами, указатель содержит ссылку на ячейку памяти. Доступ к данным, хранящимся в ячейке памяти, на которую ссылается указатель, называется разыменованием. При выполнении повторяющихся операций, таких как обход деревьев/строк, просмотр таблиц и т. д., использование указателей улучшит производительность. Это связано с тем, что разыменование и копирование указателей дешевле, чем фактическое копирование и доступ к данным, на которые указывают указатели. Нулевой указатель - это указатель, который ни на что не указывает. В Java обращение к нулевому указателю вызовет исключение, называемое NullPointerException.

Что такое массив?

Показанный на рисунке 1 фрагмент кода, обычно используемый для объявления и присвоения значений массиву. На рис. 2 показано, как массив будет выглядеть в памяти.

целые значения[5];

values[0]=100;

значения[1]=101;

values[2]=102;

values[3]=103;

values[4]=104;

Рисунок 1: Код для объявления и присвоения значений массиву

100 101 102 103 104
Индекс: 0 1 2 3 4

Рисунок 2: Массив, хранящийся в памяти

Вышеприведенный код определяет массив, который может хранить 5 целых чисел, и доступ к ним осуществляется с использованием индексов от 0 до 4. Одним из важных свойств массива является то, что весь массив выделяется как один блок памяти, и каждый элемент получает свое значение. собственное место в массиве. Как только массив определен, его размер фиксируется. Поэтому, если вы не уверены в размере массива во время компиляции, вам придется определить достаточно большой массив, чтобы быть в безопасности. Но в большинстве случаев мы на самом деле собираемся использовать меньше элементов, чем выделили. Таким образом, значительный объем памяти фактически тратится впустую. С другой стороны, если «достаточно большой массив» на самом деле недостаточно велик, программа вылетит.

В чем разница между указателями и массивами?

Указатель - это тип данных, в котором хранится адрес области памяти, в которой хранятся некоторые данные, а массивы - это наиболее часто используемая структура данных для хранения набора элементов. В языке программирования C индексация массива выполняется с использованием арифметики указателей (т. е. i-й элемент массива x будет эквивалентен (x+i)). Поэтому в C набор указателей, указывающих на набор последовательных ячеек памяти, можно рассматривать как массив. Кроме того, есть разница в том, как оператор sizeof работает с указателями и массивами. При применении к массиву оператор sizeof вернет весь размер массива, тогда как при применении к указателю он вернет только размер указателя.

Рекомендуемые: