JonathanAVazquez Ответов: 3

Но почему нам вообще нужно использовать указатели в C / C++?


Я студент cs, работающий над своей степенью. Мой путь к выпуску все еще довольно далек. Тем не менее, я хочу быть уверен, что делаю все возможное, чтобы превзойти всех остальных студентов cs.

В любом случае, я пытаюсь понять, почему мы используем указатели или зачем вообще использовать их в моем коде. Я понимаю, что указатель указывает на адрес. Этот адрес демонстрирует переменную ячейку памяти.

Таким образом, в сущности, я могу определить, какой адрес имеет моя переменная. Однако, предполагая, что каждый пользователь использует компьютер, не изменится ли адрес для этой конкретной переменной, поскольку это динамическое значение (назначенное аппаратным обеспечением и т. д.)?

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

Пожалуйста, если кто-то хочет уточнить, пожалуйста, сделайте это. Я хочу понять управление памятью и то, как оно применяется в наших приложениях.

Спасибо,
Джонатан В.

Что я уже пробовал:

unsigned short shortVar = 5;
std::cout << "shortVar: " << shortVar << std::endl;
std::cout << "Address of shortVar is: " << &shortVar << std::endl;

//OUTPUT
/*
shortVar: 5
Address of shortVar is: 0x7fff51986b2a
*/

PIEBALDconsult

Потому что.

RAMASWAMY EKAMBARAM

"C изнашивается по мере того, как растет опыт работы с ним" - предисловие к "языку программирования C - K &R".
Указатели изнашиваются исключительно хорошо по мере увеличения опыта! Обратные вызовы и обработчики событий, выполнение потоков, полиморфизм (C++) - все это зависит от указателей функций.
Указатели, вероятно, являются главной причиной того, что C продолжает держаться самостоятельно!

3 Ответов

Рейтинг:
2

Shao Voon Wong

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

А для большой структуры прохождение по адресу происходит быстрее.


Рейтинг:
1

Richard MacCutchan

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


Рейтинг:
0

Patrice T

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

Вот ссылки на справочники книг по С и с++ авторов этих языков. Обратите внимание, что C является предком C++, поэтому знание C всегда полезно с C++.
Язык программирования Си - Википедия, свободная энциклопедия[^]
https://hassanolity.files.wordpress.com/2013/11/the_c_programming_language_2.pdf[^]
http://www.ime.usp.br/~ПФ/Керниган-Ритчи/с-Программирование-электронные книги.формат PDF[^]

Язык Программирования C++ [^]