This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

problem with sizeof

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);
}
thanks
Regards
Farhan Arshad

Parents
  • 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.

Reply
  • 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.

Children