Автор Артём Артемьев задал вопрос в разделе Другие языки и технологии
Чем указатели лучше переменных? и получил лучший ответ
Ответ от Krab Bark[гуру]
Указатели — это переменные, хранящие не сами данные, а адреса ячеек памяти. Сравнивать их с обычными переменными некорректно, но указатели имеют ключевые преимущества. Они позволяют эффективно передавать большие объемы данных в функции: вместо копирования массива или структуры передается лишь адрес, что экономит ресурсы. Также они незаменимы при работе с динамической памятью и сложными структурами. Современные процессоры аппаратно поддерживают косвенную адресацию, делая обращение через указатели быстрым. Размер указателя зависит от разрядности системы: 4 байта для 32-битных и 8 байт для 64-битных систем. Обычные переменные хранят значения напрямую, а указатели дают гибкость в управлении памятью.
Как ни странно - указатели должны указывать на что-то 🙂
Переменные хранят значения, а указатели только адреса памяти. Указатели всегда занимают 2 байта, например, double туда уже не запихнуть. Наверное как-то так…
У указателе хранится адрес вашей переменной.
Если нет переменной, то нет смысла в указателе (на что он будет указывать?) .
Но без указателя нет смысла в переменной, потому что не зная ее адреса, не сможем с ней работать.
Так что учи мат. часть!
>>Указатели всегда занимают 2 байта
Купцов Дмитрий, Вы что со времен динозавров? Или учились программировать на допотопных компах, 40 летней давности?
2 байта они занимают в том случае, если адресация памяти не больше 64 КБ.
В современных компах, указатели занимают 4 байта для 32 битных систем и 8 байт для 64 битных систем.
Например, чтобы не копировать блок данных метров на 300 в ОП лишний раз. Проще взять указатель на начало блока и его длину.
когда мы пишем:
int i;
i = 10;
реально идет запись в регистр (32 бита или 64) числа 10, что намного быстрее чем из памяти брать;
Особенно если написать:
register int i; // кажись так, не помню си или с++ это
Таким образом использование переменных в си ускоряло код, особенно в те времена когда каждую команду экономили.
Регистров ограниченное кол-во, так что если много переменных, то их все же так и придется хранить в памяти и оттуда извлекать по необходимости. Хоть стек и расположен будет в кеше проца для быстродействия, но все равно регистр по любому быстрее работает.
Указатель тоже занимает место в памяти, так что если все переменные брать через указатель, то инструкция процессора более долго выполняемая, все же быстрее использовать массивы, так как указатель уже храниться в отдельном регистре и команда увеличения на 1 (i++) намного быстрее любого присваивания.
В случае использования больших объектов в памяти можно использовать только указатели (ссылки в си++ тож можно, что удобней) , но даже и тогда переменные циклов и тп используют регистры процессора.
А так действительно надо вам почитать про указатели, а еще лучше изучить ассемблер, чтоб понимать зачем изобретали язык си. В других языках еще интересней с указателями.. .
Указатели - это другой способ работы с данными. Помимо ускорения передачи информации между функциями важно использование указателей при работе с массивами и прочими структурами, так как поддерживается косвенная адресация, непосредственно реализованная в командах всех современных процессоров. Учи ассемблер и команды процессора, все станет ясно.
Указатель это тоже переменная, вообще-то. Так что ваш вопрос звучит примерно так: чем колбаса лучше еды.
нашествия мутантов на синей линии rage как дойти до этого места написано под какимто мостом а где сам вход в пещеру ето.
Открой задания. Найди сделай Активным выйди из Города. Там тебя будет напровлять указатель) ) это
подробнее...
Правда ли, что есть деревня Блядищево А то есть фотография с направлением этой деревни - или это монтаж?
Российская география снова достойно представлена в нашем обозрении. Сразу вынужден огорчить
подробнее...
Указатели С++
Указатель в С++ — это переменная, которая хранит адрес другой переменной в памяти. Поскольку сам
подробнее...
Какое различие между папкой и каталогом??!Многословно плиз! Многословно плиз!!
Папка — то же, что каталог или директория: элемент файловой системы, структура для хранения файлов
подробнее...
Не работает датчик топлива на ваз 21099 инжектор.
Датчик и указатель-это разные вещи.
С таким уровнем знаний вам надо обратиться к
подробнее...
Достопримечательности столицы
Проездом, это сколько времени и куда приезжаете? Я своих вожу, если часа 2-4 то Красная площадь,
подробнее...
какой окрас индикатора при диссоциации в водной среде H2S04 (серной кислоты)??? помогите пожалуйста!!!
уточните индикатор уневерсальный -краснеет
лакмус-либо красный либо розовый
подробнее...