I'd really like to know what type of arguments does this function take, and what happens in the for loop. void f(unsigned a[],unsigned b[],unsigned n,unsigned *c,unsigned(*t)(unsigned)) { for(int i = 0; i<n;i++) b = (*t)(a); } I realize that first 2 are arrays, the next one is an unsigned number, what about the last two?
c is a pointer to unsigned int and is not used by the function. t is a pointer to a function which takes an unsigned int and returns an unsigned int. The loop reads the content of a[] (which is assumed to have been initialised by the caller), passes it to t(), and stores the return value of t() in b[]. b should be at least the same size as a. Useful to keep this example as a reference of how function pointers work. It's also a good example of how NOT to comment your code.
C is a general-purpose, imperative computer programming language, supporting structured programming, lexical variable scope and recursion, while a static type system prevents many unintended operations.