Start with a very simple integer implementation: say, a vector where each element is one decimal digit.
Start by implementing basic arithmetic operations like addition, multiplication etc. exactly as you would do them using paper and pencil.
How do I define a datatype so that I can use it like a regular data type?
Just like how you can do int foo = 5; how can I make it so that I can do Arbitrary_int foo = 5;?
So I use an array of character is it? That's okay memory usage wise? Do I have to use pointers anywhere?
Use a vector to hold the digits. One thing that will really help is to store the least significant digit first, so for the number 123, digits[0]==3, digits[1]==2 and digits[2]==1. This makes the code much simpler when you're dealing with numbers of different lengths.