カウントが予測できない結果を返しています。時々彼らは正しい。時々全く変わった。誰でも何が間違っているのか教えていただけますか?配列の長さのカウント異常
#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!='\0'; a++) {
count++;
}
return count;
}
ええ - あなたがしようとしているのは、本質的に欠陥があります。配列の長さをCで数えることはできません。実際の配列がある場合は、#define ARRLEN(arr)(sizeof(arr)/ sizeof(* arr))を使用できますが、ポインタでは機能しません。したがって、関数に渡された配列に対して –