c - Why can we use function pointers both as (*func_ptr)() and func_ptr() to invoke a function,but not so for array pointers? -


suppose have function pointer func_ptr of type void (*func_ptr)().then know using can invoke function using pointer both :

    (*func_ptr)();     func_ptr(); 

but again, suppose have pointer integer array int (*arr_ptr)[5], why can't refer array arr_ptr[], , consequently elements arr_ptr[0],arr_ptr[1] etc? why can use (*arr_ptr)[0] , (*arr_ptr)[1]?

the type of arr_ptr[0] int [5]; type of (*arr_ptr)[0] int. if wanted to, use arr_ptr[0][0].

#include <stdio.h>  int main(void) {   int (*arr_ptr)[5];   int a[2][5] = {{1, 2, 3, 4, 5}, {11, 12, 13, 14, 15}};   arr_ptr = a;   printf("%d %d\n", (*arr_ptr)[2], arr_ptr[1][2]);   return 0; } 

you can see code "running" @ ideone.

that function pointer can used either way (nice) sintactic sugar.


Comments

Popular posts from this blog

Perl - how to grep a block of text from a file -

delphi - How to remove all the grips on a coolbar if I have several coolbands? -

javascript - Animating array of divs; only the final element is modified -