"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > C에서 정수 포인터를 증가시키는 이유는 4 바이트 만 증가합니까?

C에서 정수 포인터를 증가시키는 이유는 4 바이트 만 증가합니까?

2025-02-23에 게시되었습니다
검색:883

Why Does Incrementing an Integer Pointer in C Increase by 4 Bytes?

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