powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / передача ссылки и указателя в функцию.
4 сообщений из 4, страница 1 из 1
передача ссылки и указателя в функцию.
    #39928641
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день всем. объясните мне , пожалуйста. не могу догнать такую простую вещь ))))
вопрос по семантике или по синтаксису что ли .
итак , вот такая конструкция объявление динамического массива
int* arrtmp = new int[N];

То есть слева мы создаём статическую переменную типа указатель на интовое число.
А вот справа интереснее ))
могу предположить , что справа мы резервируем динамическую память под идущие подряд - а может и нет (что подряд это предполагаю так что может и не подряд) в памяти интовые числа в количестве N штук.
вся строка в результате означает , что в переменной arrtmp у нас содержится указатель на область памяти
где хранится первый элемент массива с индексом 0. Если есть огрехи в понимании , то поправьте, а если нет , то собственно проблема вот в чем :

а вот теперь объясните мне , пожалуйста, вот эту конструкцию :
arr[0] = 100;
arr[1] = 200;

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

а ещё справедливо следующее:
Код: plaintext
1.
2.
	int* jj = new int;
	jj[0] = 555;





может быть кто-нибудь объяснит логику семантики/синтаксиса С++ ?
...
Рейтинг: 0 / 0
передача ссылки и указателя в функцию.
    #39928642
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81,

извиняюсь, тема должна называться "объявление динамического массива" . но исправить форум не даёт (
...
Рейтинг: 0 / 0
передача ссылки и указателя в функцию.
    #39928649
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81
резервируем динамическую память под идущие подряд - а может и нет (что подряд это предполагаю так что может и не подряд)

Строго подряд.

andron81
как тут можно указывать квадратные скобочки словно это массив ? более того где разименование ?

По стандарту (С и С++), выражение x[y] эквивалентно выражению *(x + y).
Вот вам и разыменование.
По этой же причине вы можете даже написать по приколу так 0[arr] = 100 (но не стоит:))

Далее, массив при передаче его в функцию или при использовании в выражении с адресной арифментикой (как в этом примере с x+y), производится неявное преобразование его в указатель на его 0-й элемент.
Поэтому выражение x[y] допустимо как с массивом так и с указателем

Ну и последнее, new int создает один объект. Но ничего не мешает его рассматривать как массив из одного элемента.
...
Рейтинг: 0 / 0
передача ссылки и указателя в функцию.
    #39928655
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky
andron81
резервируем динамическую память под идущие подряд - а может и нет (что подряд это предполагаю так что может и не подряд)

Строго подряд.

andron81
как тут можно указывать квадратные скобочки словно это массив ? более того где разименование ?

По стандарту (С и С++), выражение x[y] эквивалентно выражению *(x + y).
Вот вам и разыменование.
По этой же причине вы можете даже написать по приколу так 0[arr] = 100 (но не стоит:))

Далее, массив при передаче его в функцию или при использовании в выражении с адресной арифментикой (как в этом примере с x+y), производится неявное преобразование его в указатель на его 0-й элемент.
Поэтому выражение x[y] допустимо как с массивом так и с указателем

Ну и последнее, new int создает один объект. Но ничего не мешает его рассматривать как массив из одного элемента.


спасибо большое
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / передача ссылки и указателя в функцию.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]