Указатели против массива в C/C++
Массив — это набор нескольких элементов одного типа, хранящихся в смежных ячейках памяти. При объявлении массивов следует указывать размер и их индексацию начинать с 0 в C/C++.
Позицию каждого элемента можно вычислить, добавив смещение к базовому значению, т. е. местонахождению в памяти первого элемента массива.
Синтаксис:
datatype var_name[size_of_array] = {elements};
Пример:
Указатель — это символическое представление адресов. Он хранит адрес переменных или место в памяти. Указатели позволяют программистам создавать динамические структуры данных и управлять ими. Переменные могут иметь тип int, array, char, function или любой другой указатель.
Синтаксис:
datatype *var_name;
Пример:
Разница между массивами и указателями в C/C++
Указатель можно использовать для доступа к элементам массива, доступ ко всему массиву с использованием арифметики указателя ускоряет доступ. Основное различие между массивом и указателем заключается в фиксированном размере блока памяти. При создании массивов выделяется фиксированный размер блока памяти. Но с указателями память выделяется динамически. Есть и другие различия между массивом и указателем, которые обсуждаются ниже в таблице.
С. Нет. | Множество | Указатель |
---|---|---|
1. | Массивы объявляются как тип var_name[size]; | Указатели объявляются как тип * var_name; |
2. | Коллекция элементов похожего типа данных. | Сохраните адрес другой переменной. |
3. | Массив может быть инициализирован во время определения. | Указатели не могут быть инициализированы при определении. |
4. | Массив может определять количество элементов, которые он может хранить. | Указатель может хранить адрес только одной переменной. |
5. | Массивы выделяются во время компиляции. | Указатели выделяются во время выполнения. |
6. | Распределение памяти происходит последовательно. | Распределение памяти случайное. |
7. | Массивы являются статическими по своей природе, т.е. их размер не может быть изменен в соответствии с требованиями пользователя. | Указатели являются динамическими по своей природе, т.е. выделенная память может быть изменена позже. |
8. | Можно создать массив указателей. | Указатель на массив может быть сгенерирован. |
9. | Java поддерживает концепцию массива. | Java не поддерживает указатели. |
10. | Массив — это группа элементов. | Указатель не является группой элементов. |