В программе ниже длина массива ar
правильна в основном, но в temp
она показывает длину указателя на ar
который на моем компьютере равен 2 (в единицах sizeof(int)
).
#include <stdio.h>
void temp(int ar[]) // this could also be declared as 'int *ar'
{
printf("%d\n", (int) sizeof(ar)/sizeof(int));
}
int main(void)
{
int ar[]={1,2,3};
printf("%d\n", (int) sizeof(ar)/sizeof(int));
temp(ar);
return 0;
}
Я хотел бы знать, как я должен определить функцию, поэтому длина массива корректно считывается в функции.