
Untitled
By: a guest on
Apr 29th, 2012 | syntax:
None | size: 0.61 KB | hits: 16 | expires: Never
Array length counting anomaly
#include <stdio.h>
int len(int[]);
int main (int argc, const char * argv[])
{
int a[]={1,2,3,4,5,6,7,8};
int* i = a;
printf("length is %d",(len(i)));
return 0;
}
int len(int* a){
int count = 0;
for (; *a!=' '; a++) {
count++;
}
return count;
}
size_t length = sizeof(a) / sizeof(a[0]);
int a[] = {1,2,3,4,5,6,7,8};
size_t length = sizeof(a) / sizeof(a[0]);
// In this case, sizeof(a[0])
// is the same as sizeof(int), because it's an int array.
int *a = malloc(sizeof(int) * 10);
size_t length = sizeof(a) / sizeof(a[0]); // WRONG!