Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Different sizeof results

Tags:

c++

c

sizeof

Why does n not equal to 8 in the following function?

void foo(char cvalue[8])
{
  int n = sizeof (cvalue);
}

But n does equal to 8 in this version of the function:

void bar()
{
  char cvalue[8];
  int n = sizeof (cvalue);
}
like image 276
jholl Avatar asked Sep 08 '08 02:09

jholl


1 Answers

Because you can't pass entire arrays as function parameters in C. You're actually passing a pointer to it; the brackets are syntactic sugar. There are no guarantees the array you're pointing to has size 8, since you could pass this function any character pointer you want.

// These all do the same thing
void foo(char cvalue[8])
void foo(char cvalue[])
void foo(char *cvalue)
like image 171
Nick Retallack Avatar answered Oct 22 '22 08:10

Nick Retallack