C/C++

Зачем нужен * и & при указании переменной в языке СИ

пример:

void main(void) {
int i = 10;
printf("%d", &i);
}
  1. Указатель – это переменная, которая хранит адрес объекта (переменной) в памяти.
  2. Над указателями допустимы две операции: & и *
  3. Операция & позволяет взять адрес объекта (переменной). ptr = &var;
  4. * является обратной операцией, которая позволяет получить доступ к значению объекта (переменной), которая расположена по адресу, который хранит указатель. Такая операция называется разыменованием. var = *ptr;
Дмитрий -_
Дмитрий -_
70 817
Лучший ответ
Андрей Анфалов Адрес, имеется в виду просто указание на участок в памяти?
И ещё, какой смысл от *? От неё есть польза?
Это операции получения переменной по ее адресу и получения адреса переменной по ее имени. В частности, в printf тут передается адрес переменной с именем i.
В этом примере функция ввода scanf() реализует один из способов возврата более одного значения - а именно через указатель. Мы передаем в нее адрес переменной i, функция внутри себя создает указатель на эту переменную int * i_ptr = &i и после этого записывает по этому адресу то значение, что вы вводите.
(& в этом синтаксисе означает взятие адреса)
*i_ptr = value. (здесь * означает что менятся будет не сам указатель i_ptr, а значение ячейки памяти, на которое он указывает. )
Теперь в переменной i будет значение value. И после выхода из функции оно никуда не денется.
>>Зачем нужен * и & при указании переменной в языке СИ
Это операторы. Операторы оперируют операндами.
Андрей Бабенко
Андрей Бабенко
12 593
Это операции нужны для работы с указателями, это сложная тема, для понимания которого требуется некоторое время. Изучай тему Указателей и тогда этот вопрос полностью отпадет.