They are an integral part of C but that doesn't mean using them is good coding practise.
Do you don't recommend using arrays in C? Or passing pointers to variables so functions can modify them?
I don't think you understand pointers, which is why you fear them.
Please play the ball not the man. I have a perfect understanding of pointers. But I also have a perfect understanding of their dangers which is why I recommend using C++ where you can pass variables by reference instead of a pointer.
Say you have this C function:
do_something(int in1, int *out1, int *out2)
If someone calls that with do_something(1, NULL, &a) that may break if do_something doesn't check the pointers.
In C++:
do_something(int in1, int &out1, int &out2)
If someone calls that with do_something(1, NULL, a) it won't compile.
See the difference? The second form is easier because you don't have to worry someone calling do_something with an invalid pointer (*). If a large piece of software consists of many modules there is always a chance someone tries to call a function in a way that has not been forseen.
(*) It is good coding practise to check boundaries of function parameters especially if a function is visible to other modules in a piece of software. It helps to compartmentalize the software and prevents errors from causing a cascade of weird behaviour.