다음 코드 비트 ... 어레이 정렬 /를 sizeof() 값을 리턴 여분
void foo(char* x)
{
int i;
int len = sizeof(x)/sizeof(x[0]);
printf("len: %d\n", len);
for(i=0; i<len; i++){
printf("i: %d, v: %x\n", i, x[i]);
}
}
...이라고 할 때와 :
char bar[] = {0xDE, 0xAD, 0xBE, 0xEF};
foo(bar);
... 출력 :
len: 8
i: 0, v: ffffffde
i: 1, v: ffffffad
i: 2, v: ffffffbe
i: 3, v: ffffffef
i: 4, v: ffffffff
i: 5, v: 7f
i: 6, v: 0
i: 7, v: 0
이렇게 적용 할 수는 있지만 SO와 유사한 게시물을 읽는 것은 확실하지 않습니다.이 문제는 정렬 문제로 보입니다 (저는 64 비트 컴퓨터에있는 것 같습니다).
모든 포인터?
감사합니다.
가능한 중복 [sizeof의을 (포인터 배열을 가리키는) 찾는 방법 (HTTP :/(가)
ffffff
대신char
의unsigned char
유형을 사용하거나이 같은unsigned int
에printf
인수를 캐스트 할 수 있습니다 피하기 위해 /stackoverflow.com/questions/492384/how-to-find-the-sizeofa-pointer-pointing-to-an-array) –