Possible Duplicate:
Sizeof an array in the C programming language?
Why is the size of my int array changing when passed into a function?
I have this in my main:
int numbers[1];
numbers[0] = 1;
printf("numbers size %i", sizeof(numbers));
printSize(numbers);
return 0;
and this is the printSize method
void printSize(int numbers[]){
printf("numbers size %i", sizeof(numbers));}
You can see that I dont do anything else to the numbers array but the size changes when it gets to the printSize method…? If I use the value of *numbers it prints the right size…?
Any array argument to a function will decay to a pointer to the first element of the array. So in actual fact, your function
void printSize(int[])effectively has the signaturevoid printSize(int*). In full, it’s equivalent to:Writing this way hopefully makes it a bit clearer that you are looking at the size of a pointer, and not the original array.
As usual, I recommend the C book’s explanation of this 🙂