-1
配列の長さを取得するために自分自身の関数に問題があります。 コード:c lang - ポインタによる異なる配列の長さ
#include <stdio.h>
int main() {
int a[] = {5,4,1,2,1}; //len -> 6!! FAIL! WHY?
//int a[] = {5,4,1,2}; //len -> 4 OK!
int len = 0;
int *p = a;
while(*p != '\0'){
printf("%d\n", *p);
len++;
*p++;
}
printf("len: %d\n", len);
return 0;
}
出力上のコード:
5
4
1
2
1
32767
len: 6
が、INT [] = {5,4,1,2}この配列。 - len = 4 - okを生成します。
なぜ起こるのですか?
これは未定義の動作です。アレイにはヌルターミネータはありません。 – tkausl
C文字列は配列です。しかし、それは双射ではありません。配列はCの文字列ではありません。 – Olaf