ссылка на int в scanf

Этот вопрос может выглядеть глупо, но так люди учатся :). Я изучил C ++, где вам не нужно было беспокоиться о ссылках на переменную int в cin >>. Сегодня я изучал обработку файлов в C для школьной работы, но когда я попытался запустить программу с этим синтаксисом, я получил ошибку.

scanf("%d\n %s\n",id, name);

Но когда я ссылался на id в scanf, ошибка исчезла. I-e;

scanf("%d\n %s\n",&id, name);

Почему это так? Я буду очень благодарен за ответ на этот вопрос новичка ..

2

Решение

scanf это функция, которая ожидает указатель на переменную, чтобы она могла сохранить значение, которое она читает, в место, на которое указывает указатель.

name предположительно какой-то (char?) массив, поэтому идентификатор этой переменной уже относится к адресу, поэтому & оператор не нужен. Это однако для int переменная (я предполагаю id это какой-то int) вам нужно получить адрес для передачи scanf в вызове.

1

Другие решения

scanf нужен адрес id так что сканирование хранит значение там. Его не интересует текущее значение, которое дается в вашем первом случае.

1

scanf — это функция C. C не имеет ссылок, поэтому для изменения переменной scanf необходимо передать указатель на местоположение этой переменной. C ++ имеет ссылки, поэтому он не нуждается в указателях, хотя он может также использовать их.

0

зсапЕ () требует адрес переменной для хранения данных.

В случае целого числа «&«Символ должен ссылаться на адрес целочисленной переменной. Но в случае строки его не требуется использовать»&«как строка уже указатель на массив символов.

0
По вопросам рекламы [email protected]