This is well known code to compute array length in C:
sizeof(array)/sizeof(type)
But I can\'t seem to find out the length of the array pass
As stated by @Will, the decay happens during the parameter passing. One way to get around it is to pass the number of elements. To add onto this, you may find the _countof()
macro useful - it does the equivalent of what you've done ;)
Regarding int main():
According to the Standard, argv
points to a NULL-terminated array (of pointers to null-terminated strings). (5.1.2.2.1:1).
That is, argv = (char **){ argv[0], ..., argv[argc - 1], 0 };
.
Hence, size calculation is performed by a function which is a trivial modification of strlen()
.
argc
is only there to make argv
length calculation O(1).
The count-until-NULL method will NOT work for generic array input. You will need to manually specify size as a second argument.