While they both serve a similar purpose, #define and const act differently. When using #define the identifier gets replaced by the specified value by the compiler, before the code is turned into binary. This means that the compiler makes the substitution when you compile the application. Take for example:
#define number 108
In this case every instance of “number” will be replaced by the actual number 108 in your code, and this means the final compiled program will have the number 108 (in binary).
On the other hand, when you use const and the application runs, memory is allocated for the constant and the value gets replaced when the applicaton is ran:
const int number = 108;