Этот вопрос может выглядеть глупо, но так люди учатся :). Я изучил C ++, где вам не нужно было беспокоиться о ссылках на переменную int в cin >>. Сегодня я изучал обработку файлов в C для школьной работы, но когда я попытался запустить программу с этим синтаксисом, я получил ошибку.
scanf("%d\n %s\n",id, name);
Но когда я ссылался на id в scanf, ошибка исчезла. I-e;
scanf("%d\n %s\n",&id, name);
Почему это так? Я буду очень благодарен за ответ на этот вопрос новичка ..
scanf
это функция, которая ожидает указатель на переменную, чтобы она могла сохранить значение, которое она читает, в место, на которое указывает указатель.
name
предположительно какой-то (char
?) массив, поэтому идентификатор этой переменной уже относится к адресу, поэтому &
оператор не нужен. Это однако для int
переменная (я предполагаю id
это какой-то int
) вам нужно получить адрес для передачи scanf
в вызове.
scanf
нужен адрес id
так что сканирование хранит значение там. Его не интересует текущее значение, которое дается в вашем первом случае.
scanf — это функция C. C не имеет ссылок, поэтому для изменения переменной scanf необходимо передать указатель на местоположение этой переменной. C ++ имеет ссылки, поэтому он не нуждается в указателях, хотя он может также использовать их.
зсапЕ () требует адрес переменной для хранения данных.
В случае целого числа «&«Символ должен ссылаться на адрес целочисленной переменной. Но в случае строки его не требуется использовать»&«как строка уже указатель на массив символов.