This paragraph is incorrect:
| Both, the executable compiled program code and the used variables, are
| put inside this memory. Thus a function in the program code is, like
| e.g. a character field, nothing else than an address. It is only
| important how you, or better your compiler/processor, interpret the
| memory a pointer points to.
I have developed in C for processors where program and address space
were completely different. On the implementation I am thinking of
unsigned int is large enough to represent and function or object
pointer, so on this implementation is is entirely possible you could
find "(unsigned int)func_ptr == (unsigned int)object_ptr" was true.
It also erroneously states, "Note: Although you may ommit the address
operator on most compilers you should always use the correct way in
order to write portable code" when in actual fact the standard allows
you to omit the & operator so on *any* conforming implementation you do
not need it.
en.wikipedia.org/wiki/Function_pointer
This isn't since the sentence "Function pointers are of the type the
function returns." is incorrect. Function pointers are of type pointer
to function (actually, they point to a function with with the specified
signature).
So over all, no, those are *not* good resources.