void getnums(int *a, int *b);
int main()
{
int a;
int b;
int c;
getnums(&a,&b);
c = a + b;
printf("a + b = %d\n", c);
return 0;
}
void getnums(int *a, int *b)
{
printf("a:? ");
scanf("%d", a);
printf("b:? ");
scanf("%d", b);
}
Why don't I need ampersands before the a and b in the scanfs? (The code currently works.)
Because
scanf
takes pointers as its arguments (so that it knows what variable to modify), anda
andb
are already pointers.Whenever we
scan
some input it needs a memory location(i.e. address) to store that value, for simple variables we have to use&
- ampersand - to provide that address.Here, in function
getnums
,a
andb
are pointers so they will already contain address, so no need to write&
to give the address.