Why are there so many of these "I finally understand [cloures | pointers | misc CS concept]" posts? I mean these are pretty fundamental concepts that any first year CS student should be able to grasp pretty quickly.
Because many of us never were CS undergrads. We formally learnt to program in the context of another field (Mech Eng in my case - FORTRAN, MATLAB and DCL), and prior to that were entirely self-taught. Many of us have many years of experience with procedural and object-oriented styles and are only recently coming to the functional style, either out of pure interest, or out of necessity. So bear with us :-)