Лучший способ использовать scanf
на протяжении всей жизни кода - запоминание следующего правила
scanf("%[direction_of_what_to_scan][special format character]",
Pointer_on_some_memory_location);
Что делает scanf
, так это то, что он хранит то, что было введено (с некоторыми ограничениями по длине)по адресу памяти.Итак, либо:
int n1;
scanf("%d",&n); //which means the address of variable n1 in memory
, либо
int *n2 = &n1;
scanf("%d",n) // &doesn't need to be used cause n2 is now already pointer to an integer
Оба будут различными реализациями одного и того же, они отличаются в части использования указателей, для которых C хорошо известен,и даже применимо в наши дни.