Abstract data type in C