It's a great foundation and quite practical, even to this day. See the link below. Yes, it is worth becoming an expert at C.
P.S. Since you are working hard to understand pointers, can you now write a function that accepts a pointer to a function like strcpy() and returns that same pointer as its result value? In short, the routine does nothing but accept and return the same value, a pointer to a function. But you need to declare it correctly. Take a crack at the syntax. I'll post it, shortly, if you don't close down this question before I do that. And if you get that far, create an array of structures where one of the members of that structure happens to be one of these pointers and then use it in some C code snippet that scans the array and when some key is found, accesses the indicated function correctly. When this becomes 2nd nature to you, you know C pointers pretty well.
P.P.S. Oh, and it sounds like you really are a programmer, writing "satisfaction for doing something trivial and easy." I could hardly put it better. You are a programmer. hehe.
P.P.P.S. Here's the function. I didn't even need to test it. It flows out of my hand freely:
char * (*func( char * (*p)( char *, const char * ) ))( char *, const char * ) {
return p;
}
Reads easy to me, as well. You might use it like this:
int main( int argc, char *argv[] ) {
char * (*z)( char *, const char * );
z= func( strcpy );
z= func( z );
return 0;
}
Now you explain the syntax to me.
You can do significant things in C. Keep in mind that C++ didn't have a compiler of its own for 10 years or more. It was compiled using a C program called CFRONT which converted C++ source into C source, which was then compiled with an everyday C compiler. C can do C++. See 2nd link below.