так чтобы при изменении значения по указателю значение переменной тоже менялось? Или как изменить данный код чтобы он выводил "1 1"
#include <iostream>
using namespace std;
int main() {
int *p = new int;
int a = *p;
int b = *p;
a = 1;
cout << a << ' ' << b;
return 0;
}
Попробуй *p=1
Вы создаёте сначала переменную, а потом указатель на неё. Разыменовывая указатель, вы получаете доступ к самой переменной.
А если у меня есть доступ только к указателю?
Просто создайте ещё один указатель на ту область памяти, на которую указывает предыдущий указатель. Советую думать про это именно как про физически существующую память, а не про абстрактные переменные, иначе можно воображение сломать.
Можно и так, просто как-то странно, что переменную указателем я могу заменить, а указатель переменной нет.
Указатель просто содержит адресс ячейки памяти. Гипотетически память, занимаемую указателем, можно интерпретировать, как число, только до конца не ясно, зачем?
Ну как бы, чтобы можно было использовать арифметику указателей
Арифметика указателей пусть в чём-то и похожа на работу с числами, но чисто субстантивно реализует качественно отличающееся поведение.
Арифметика указателей — очень мощный инструмент
Да, как световой меч.
Ну короче, арифметика указателей - это другое, понимать надо.
Ну по смыслу, когда мы через оператор [] скобки, мы просто добавляем к его адресу +i в шестнадцатеричной системе исчисления, а так как массив состоит из одного типа данных, то делая шаг по столько байт, сколько весит один элемент мы итерируемся по непрерывному блоку памяти, массиву
Обсуждают сегодня