"Accessing the null pointer is very dangerous, as it might crash your program. Always make sure that you are not accessing null pointers."

If you're going to read or write through an invalid pointer, the NULL pointer is your friend, and an immediate segfault is the best thing that could happen. The worse thing that could happen is that the program keeps chugging along and you never notice the bug.

"Always use memset along with malloc, or always use calloc"

That's a good way to defeat checkers like Valgrind. I'm not saying it's a bad idea, but not something a programmer should be instinctively doing without thinking about it. In fact, excepting stylistic stuff, "always" is a poor way to approach programming. You should do nothing which isn't deliberate and well thought out.