I am trying to read the input from a keyboard which i will use to create a set of multiplications. If i hardcode the integer to use then the program works fine however when
Just to explain why this happened (as Neil already explained what was causing it), scanf was expecting an address to write to. When you passed in the value of 'multiple', it was interpreted as an address, specifically address 0 as that was the value at the time.
The reason for this is so that scanf can set the value of your variable to the value of the input. If you do not pass a pointer you are passing a copy of the value of the variable. When you pass a pointer you are passing a copy of the value of the pointer, so as long as scanf writes to that same memory address it can change the variable's value.