firstly i dont bother anyone secondly you dont have to answer my question thirdly nobady teach me anything i am trying to learn c++ with resources i found on the net . and last thing please dont help me next time
@Peter87
Why do you have decided that it is not a compilation error? In fact a pointer is converted to integral type. And, secondly. z is not an array! How this code can be compiled?!
1. You should not use the '_' character in the beginning and end of your function names, they are ONLY used for C++'s Standard Libraries's Internal Utilities, and using it may give you errors. So just remove it with some other name. You can anyways use the '_' character, if the first letter after this symbol is a Uppercase letter, like: _READ instead of _read. Or maybe it was lowercase, i don't remember. But for security reasons don't use it, eventually use read_f. There should be no problem using a '_' INSIDE a function name.
2. Into the statement read_(z[&i]); You missed it. It should be: read_(&z[i]);.
3. There is no third point. That should do the "job".
@vlad &i gives you a pointer to the array (human(*)[3]). z[&i] is the same as (&i)[z]. Using operator[] on the pointer we get an array (human[3]). An array decays to a pointer (human*) which is exactly what the function expects as argument.
@Peter87
Thanks, I have also seen it but at the first glance it seems as an error. Of course a[0] and 0[a] are equivalent. But in any case such constructions should be avoided because they make the code difficult to read.:)