hi i wrote this code which is written bellow when ever i check the value of u it appear to be the 3. while it is supposed to be 8. Can any body tell me what is the problem with this code and how can i get the exact size of the arrgument of func.
void main(){ func("fara.txt"); } void func(unsigned char arr[]){ int u; u=sizeof(arr); }
Even in theory, sizeof is not a function. It is an operator. It seems to be a nearly universal convention to write the expression as "sizeof (X)", so it looks like a function. But "sizeof X" would also be correct. X is evaluated at compile time to determine the type of the expression (only); X is not actually evaluated nor is any code generated. While I'm at it, return is not a function, either. It's a keyword. So, the fairly common convention of including the return value in parens: return (result); is unnecessary. exit() is a function; return is not.
"But "sizeof X" would also be correct." If X is a type name, parentheses are required. In fact, it is only when the sizeof operator is used to obtain the size of a type, that the parentheses are required.