Другие языки программирования и технологии
Для чего в С++ нужна звездочка вот такая *?
Для чего в С++ нужна звездочка вот такая *? Например int *a; ну и про другие применения расскажите... Объясняйте как можно подробней и на пальцах до меня долго доходит!!!
Это указатель на адрес
int b = 11
int *a = &b;
// *a сейчас 11, a - адрес указывающий на перемпнную b
b = 15;
// *a сейчас так же 15
*a = 100;
// b сейчас 100
// А вот так вы скорее всего получите Exception
a = 12345;
*a = 12;
// Так как первым действием задали адрес, который не принадлежит стеку вашего процесса
Тут нужно читать и пробовать )) По другому никак
int b = 11
int *a = &b;
// *a сейчас 11, a - адрес указывающий на перемпнную b
b = 15;
// *a сейчас так же 15
*a = 100;
// b сейчас 100
// А вот так вы скорее всего получите Exception
a = 12345;
*a = 12;
// Так как первым действием задали адрес, который не принадлежит стеку вашего процесса
Тут нужно читать и пробовать )) По другому никак
Ко всем предыдущим остается только добавить, что кроме указателя, * также означает умножение в формулах.
* используется по-разному. зависит от места применения.
* оператор умножения
int a, b,c;
c = a * b; // оператор умножения a и b
с *= а; // оператор умножения с присваиванием, равносильно c = c * a;
* в определении типа переменной
int a, *b, **c;
a - переменная типа int,
b - переменная типа указатель на int
c - переменная типа указатель на указатель на int
указатель- это переменная, содержащая адрес другой переменной
* оператор разыменования указателя.
Если переменная-указатель содержит адрес другой переменной, то чтобы использовать переменную на которую "смотрит" указатель, указатель нужно разыменовать.
int a, *b;
b = &a;// инициализация указателя, теперь b смотрит на a;
*b = 20;// переменной на которую смотрит b (т. е. - a) присвоить значение 20
int c = *b; // c присвоить значение переменной, на которую смотрит b
* оператор умножения
int a, b,c;
c = a * b; // оператор умножения a и b
с *= а; // оператор умножения с присваиванием, равносильно c = c * a;
* в определении типа переменной
int a, *b, **c;
a - переменная типа int,
b - переменная типа указатель на int
c - переменная типа указатель на указатель на int
указатель- это переменная, содержащая адрес другой переменной
* оператор разыменования указателя.
Если переменная-указатель содержит адрес другой переменной, то чтобы использовать переменную на которую "смотрит" указатель, указатель нужно разыменовать.
int a, *b;
b = &a;// инициализация указателя, теперь b смотрит на a;
*b = 20;// переменной на которую смотрит b (т. е. - a) присвоить значение 20
int c = *b; // c присвоить значение переменной, на которую смотрит b
Читай и разбирайся. Это в двух словах не расскажешь.
Если разбирёшся с "этой звёздочкой",можешь считать, что ты в С/С++ перешёл Рубикон.
int x=10;
int *a=&x; //в "а" записали адрес переменной "х"
*a=10; //(разыменование) равно значению переменной "x" или содержимому ячейки, на которую указывает "а"
int *pa=&a;//(взятие адреса) создаём новый указатель, в который записываем адресс "а"
a=&b; //теперь в "а" хочем записать адрес переменной "в",но отсос, такой переменной ещё нет
int b=20; //создадим переменную "в"
*a=b; //значение, имеющееся по адресу, записанному в "а" изменим на "в",т. е. на 20.Теперь х=20
Ещё у начинающих вызывает замешательство такая фигня:
int x=10;
int *a=&x;
*a=10;
И в первом и во-втором случае есть"*а".Но в первом случае присваивается адрес, а во-втором число. Что за нелепость? Что там себе думал Страуструп? И молодой программист попадает в ступор.
Всё очень просто. Первое выражение рассматривайте так
(int *) a=&x;
В этот момент "*" не имеет отношения к получению значения. Просто объявляется переменная "а",в которую записывается адрес переменной "х". "*" здесь говорит о том, что мы создаём указатель, а не простую переменную и всё.Такой синтаксис объявления указателей. Первое время, чтоб привыкнуть, вообще пишите так, в две строки:
int *a; //объявили указатель
a=&x;//записали в него адрес
int d=*a;//теперь d присвоили значение, которое находится в памяти по адресу, записаному в "а"
х==10;
a==0x33787974(или что-то похожее) ;
d==10;
Если разбирёшся с "этой звёздочкой",можешь считать, что ты в С/С++ перешёл Рубикон.
int x=10;
int *a=&x; //в "а" записали адрес переменной "х"
*a=10; //(разыменование) равно значению переменной "x" или содержимому ячейки, на которую указывает "а"
int *pa=&a;//(взятие адреса) создаём новый указатель, в который записываем адресс "а"
a=&b; //теперь в "а" хочем записать адрес переменной "в",но отсос, такой переменной ещё нет
int b=20; //создадим переменную "в"
*a=b; //значение, имеющееся по адресу, записанному в "а" изменим на "в",т. е. на 20.Теперь х=20
Ещё у начинающих вызывает замешательство такая фигня:
int x=10;
int *a=&x;
*a=10;
И в первом и во-втором случае есть"*а".Но в первом случае присваивается адрес, а во-втором число. Что за нелепость? Что там себе думал Страуструп? И молодой программист попадает в ступор.
Всё очень просто. Первое выражение рассматривайте так
(int *) a=&x;
В этот момент "*" не имеет отношения к получению значения. Просто объявляется переменная "а",в которую записывается адрес переменной "х". "*" здесь говорит о том, что мы создаём указатель, а не простую переменную и всё.Такой синтаксис объявления указателей. Первое время, чтоб привыкнуть, вообще пишите так, в две строки:
int *a; //объявили указатель
a=&x;//записали в него адрес
int d=*a;//теперь d присвоили значение, которое находится в памяти по адресу, записаному в "а"
х==10;
a==0x33787974(или что-то похожее) ;
d==10;
боюсь начинающему программисту такие объяснения не помогут. надо пробовавть самому.
если вы вначале изучение не поймете назначение указателя, адресную арифметику, то дальнейшее изучение можно прекратить. читайте, учите, пробуйте.
Похожие вопросы
- Люди как называется программа которая покажет за место звездочек пароль аси в проге квип инфиум
- Нужна такая програмка
- Для чего нужен Нетбук?
- Почему считают что программисту математика не нужна? Откуда взялся этот миф?
- ПОМОГИТЕ! Нужна формула рассчета рейтинга фотографий! Или объяснение, как его посчитать! Выручайте!
- Несколько вопросов по Делфи. что такое указатели и зачем они нужны, зачем нужна @ ,и что за тип Pointer.
- Нужен бесплатный хостинг для создания сайта через код а не конструктор
- У друга появилась такая штука,пишет "онлайн антивирус обнаружил вирус и через 150 сек он заразит весь жёсткий диск и п
- Есть ли такая прога которая говорит пользователю что комп готов к работе?
- есть ли такая программа на компьютер с которой можно разговаривать с компом