Ha, that is what makes someone a good developer, and that every good developer is aiming.
I have a hard time putting everything together to make a functional program.
On programming, reading a book about a language and its structures is easy and does not make you a programmer yet. To assemble all this knowledge in something functional is the tricky part.
So, prepare yourself to practice a lot. Create a lot of simple programs about every single topic you find: pointers, memory management, data structures (lists, stacks, trees...), classes, modifiers, etc.
Then you can start assembling this stuff together.
Still, you won't have mastered any of those fields. You will have to learn how to assemble them in a way that is not harmful for your computer: does not leak resources, does not crash, etc.
There is a movie featuring Jackie Chan and Jet Lee where JC says to his apprentice "You have to empty your cup first".
Programming is like that: when you think you mastered something (you filled your cup), you have to empty it because there is much more to learn