Вопрос по objective-c – какой смысл указателей в объективном языке [закрыто]

1

Я не могу найти практического использования указателей на объективном языке. Я знаю c # и java, и нет необходимости использовать указатели (это то, что я думаю, и это также рассматривается как код dangoures для c # и java), но теперь я начинаю изучать цель-c, и я не могу понять, почему вы должны всегда создать указатель на экземпляр объекта.

Точка указателей ... Смешно Alex
возможный дубликатObjective-C and Pointers Josh Caswell
О, есть тонныpractical использует для указателей. Теперь, если вы хотите поговорить о плюсах и минусах указателей и ссылок на управление памятью, вы можете перефразировать свой вопрос. Perception
Это может быть потому, что Objective-C - это просто слой поверх C, который широко использует указатели. Кроме того, объекты Java по сути являются указателями, просто без *. Paaske

Ваш Ответ

4   ответа
1

которую вы можете делать с указателями, а с ссылками - не увеличивать их. Поскольку указатель является адресом (который уже был упомянут), изменение его значения делает его указателем на следующий / предыдущий объект в массиве. Это не очень полезно, поскольку вы можете просто использовать следующий / предыдущий индекс в массиве, но в некоторых ситуациях он может привести к крошечному более быстрому коду (хотя и более грязному и более подверженному ошибкам).

Указатели довольно забавные, когда к ним привыкаешь;)

1

Что это просто адрес в области памяти, где хранится объект.

Поэтому, если вы работаете с указателями и передаете указатель на функцию в качестве параметра, вы передаете только адрес, а не весь объект. Это намного быстрее, потому что вам не нужно копировать весь объект, вы просто можете получить доступ к значениям объекта через адрес.

Java также использует указатели, вам просто не нужно беспокоиться о них самих. (Что в некоторых случаях довольно раздражает, если вы не хотите использовать указатели.)

Edit

int nvar=2;
int* pvar=&nvar;

здесь вы можете видеть, что если я возьму ссылку на целое число «nvar», я могу поместить его в указатель на целое число «pvar». Так что это связь между указателями и ссылками (в данном случае на C ++)

Как уже упоминали другие люди, указатели используются для множества вещей. Полиморфизм, например, возможен только с указателями. Если вы берете ссылку на объект (это тоже может быть целое число), вы получаете адрес объекта, и тогда вы фактически работаете с указателями. Я добавлю кое-что еще в мой ответ выше.
Я знаю, что указатели содержат адрес для объекта ... но почему вы не можете просто использовать ссылку, как в C # или Java? gorgi93
1

в C # вы на самом деле используете указатели, хотя не явно. Подумайте о делегатах, анонимных типах и т. Д., Сборка мусора в c # также может быть успешной, если вы не управляете эффективным использованием этих ссылочных типов.

в obj-c игровая поверхность немного более открыта. Я полагаю, что этот подход имеет столько же недостатков, сколько и плюсов, именно по тем причинам, которые вы указали выше, относительно опасности памяти gpf и т. Д.

медленно медленно, броская обезьяна :)

2

вы хотите, чтобы ваша функция изменила исходный объект, вы должны передать указатель на этот объект. Java и c # передают аргументы по ссылке, поэтому указатели не нужны.

Похожие вопросы