포인터 값은 변수의 주소입니다. 왜 int pointer
의 값이 int 포인터가 1 씩 증가한 후에 4 바이트 씩 증가 했는가?왜 int 포인터 '++'가 1이 아닌 4 씩 증가합니까?
제 의견으로는 포인터의 값 (변수의 주소)은 포인터 증가 이후에만 1 바이트 씩 증가한다고 생각합니다.
시험 번호 :
int a = 1, *ptr;
ptr = &a;
printf("0x%X\n", ptr);
ptr++;
printf("0x%X\n", ptr);
예상 출력 :
0xBF8D63B8
0xBF8D63B9
실제로 출력 :
0xBF8D63B8
0xBF8D63BC
EDIT :
다른 질문 - int
이 하나씩 4 바이트를 방문하는 방법?
"'void'는 불완전한 타입이기 때문에'void *'를 증가시킬 수 없습니다. - true이지만 gcc는'void *'를 확장으로 처리합니다 (마치'char *'처럼 취급합니다). –
"거의 이해할 수 없다"정수의 경우, 가변 길이 구조의 배열과 같은 상황에서는 완벽한 의미를 갖습니다 ("버퍼가 가득 찼습니다. 다음 패킷으로 CurrentPacketPointer를 이동하려고합니다. 패킷"). –
"실제로 1 바이트 이동하려면 char *를 증가 시키십시오. char의 크기는 항상 1입니다."아니 항상 1이 아니므로 대신 uint8_t를 사용해야합니다. – Winter