Q : 왜 int pointer '' ''1이 아닌 4 씩 증가 하는가 int 포인터의 4 바이트 증분은 가리키는 데이터 유형의 크기와 관련이 있습니다. 각각의 int 변수는 4 바이트의 메모리를 차지하므로 int 포인터를 증가시키는 다음 int로 포인터를 움직입니다.
테스트 코드 : &&&] int a =, *ptr; ptr = & a; printf ( "%p \ n", ptr); ptr; printf ( "%p \ n", ptr);
예상 출력 :
0xbf8d63b8 0xBF8D63B9
실제 출력 :int a = 1, *ptr; ptr = &a; printf("%p\n", ptr); ptr ; printf("%p\n", ptr);
0xBF8D63B8 0xBF8D63BC 출력의 차이는 4 바이트 증분 때문입니다. 예상 출력은 1 바이트 증분을 보여 주지만 실제 출력은 4 바이트 점프를 보여 주어 메모리 주소가 눈에 띄게 점프됩니다.
int a = 1, *ptr; ptr = &a; printf("%p\n", ptr); ptr ; printf("%p\n", ptr);
추가 질문 : 개별적으로 int bytes 방문 [ &&&]
0xBF8D63B8 0xBF8D63BC
a : int의 개별 바이트에 액세스하려면 int 포인터를 숯 포인터로 시전 할 수 있습니다. 그런 다음 char 포인터를 증가시켜 int. int* p = & i; char* c = (char*) p; char x = c [1]; // int
이 예제에서 int 변수 i의 첫 바이트는 c [1] 표현식을 사용하여 액세스합니다. int.다른 데이터 유형에 대한 포인터 산술 규칙을 이해하는 것은 C 프로그래밍에서 올바른 메모리 처리를 보장하는 데 중요합니다. int pointers의 4 바이트 증분의 이유를 이해함으로써 일반적인 함정을 방지하고보다 효율적인 코드를 작성할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3