Originally Posted by
prog-bman
This will do:
Code:
sizeof(array) / sizeof(array[0])
No it won't. Read the OP.
Now I pass the array to a function:
function(myarray);
How can I find out inside the function the size allocated to the array?
Code:
#include<stdio.h>
void foo( int array[] )
{
printf( "sizeof( array ) is %d\n", sizeof( array ) );
printf( "sizeof( array[ 0 ] ) is %d\n", sizeof( array[ 0 ] ) );
printf( "sizeof( array ) / sizeof( array[ 0 ] ) is %d\n",
sizeof( array ) / sizeof( array[ 0 ] ) );
}
void bar( char array[] )
{
printf( "sizeof( array ) is %d\n", sizeof( array ) );
printf( "sizeof( array[ 0 ] ) is %d\n", sizeof( array[ 0 ] ) );
printf( "sizeof( array ) / sizeof( array[ 0 ] ) is %d\n",
sizeof( array ) / sizeof( array[ 0 ] ) );
}
int main( void )
{
int array[ 10 ];
char barray[ 10 ];
foo( array );
bar( barray );
return 0;
}
/*
sizeof( array ) is 4
sizeof( array[ 0 ] ) is 4
sizeof( array ) / sizeof( array[ 0 ] ) is 1
sizeof( array ) is 4
sizeof( array[ 0 ] ) is 1
sizeof( array ) / sizeof( array[ 0 ] ) is 4
*/
Arrays degrade to pointers to their first element when passed to functions. No cigar for you.
Quzah.