2010-10-08 3 views

ответ

22

Поскольку C имеет только параметры «pass-by-value», поэтому для передачи «переменной» для ввода значения вы должны передать свой адрес (или указатель на переменную).

+0

Спасибо человеку за это. –

5

Для этого необходимо указать адрес. Если вы объявите переменную как указатель, то scanf не понадобится &.

1

Когда вы вводите что-то со стандартным устройством ввода (обычно с клавиатурой), данные, которые должны пройти, должны быть где-то stored. Вы должны point где-то в памяти, чтобы там можно было хранить данные. До point место памяти, вам нужно address этого местоположения. Таким образом, вы должны передать свой адрес переменной с помощью оператора & с scanf().

1

Все остальные хорошо описали, что sscanf должен поставить свой вывод где-то, но почему бы не вернуть его? Безусловно, он должен вернуть много вещей - он может заполнить несколько переменных (управляемых форматированием), и он возвращает int, указывающий, сколько из этих переменных было заполнено.

9

scanf не принимает «адрес оператора (&) ". Требуется указатель . Чаще всего указатель на выходную переменную получает путем использования адреса-оператора в вызове scanf, например.

int i; 
scanf("%i", &i); 
printf("number is: %d\n", i); 

Но это не единственный способ сделать это. Ниже так же, как действует:

int* iPtr = malloc(sizeof(int)); 
scanf("%i", iPtr); 
printf("number is: %d\n", *iPtr); 

Так:

int i; 
int iPtr = &i; 
scanf("%i", iPtr); 
printf("number is: %d\n", i); 
1

как значение будет сохранено, (где?), В адрес памяти. поэтому scanf() имеет дело с (&) оператором.

 Смежные вопросы

  • Нет связанных вопросов^_^