sizeof (특히이 코드의 int) 역할을하는 간단한 코드를 작성하려고했습니다. 하지만 출력으로 1을 표시하는 이유는 무엇입니까? 4이어야합니다.크기에 대한 코드?
#include<stdio.h>
int SIZEOF(int *);
int main(void)
{
int a;
printf("Size is:%d bytes\n",SIZEOF(&a));
return 0;
}
int SIZEOF(int *p1)
{
int *p2;
p2=p1;
p1++;
return (p1-p2);
}
'p1 ++'이'sizeof (int) '만큼 증가하는 것과 같은 이유로'p1-p2'는'sizeof (int)'의 단위 차이입니다. 첫 번째는 항상 크기가 1 인'char *'으로 캐스트. – GManNickG
포인터에'+ 1'을 지정하면 포인터가 다음 유형의 위치를 가리키게됩니다. (이 값은 주소 값이 아니라 프로그램에서 매우 유용한 논리 증가 값입니다.) 포인터 산술은 값 산술과 다릅니다. –