숫자 뒤집기 이해가안됩니다..!
대나무
2023.04.01
질문 제목 : 숫자 뒤집기 이해가안됩니다..!배열 에 저장된 1,2,3,4,5,6를 포인터를 이용하여 숫자 뒤집기.질문 내용 :
#includestdio.h
int main(void)
{
int arr[6]={1,2,3,4,5,6};
int * ptr1 = &arr[0];
int * ptr2 = &arr[5];
int i,temp;
for(i=0;i3;i++)
{
temp = *ptr1;
*ptr1=*ptr2;
*ptr2 = temp;
ptr1+=1;
ptr2-=1;
}
for(i=0;i6;i++)
printf(%d,arr[i]);
return 0;
}
이런 소스입니다.
temp = *ptr1;
*ptr1=*ptr2;
*ptr2 = temp;
여기까지는 이해가됩니다. 첫번째와 마지막을 서로 바꿔주는거죠.
그럼 6 2 3 4 5 1이 됩니다. 당연 두개만 바꿔주었으니까요..
그런데
ptr1+=1;
ptr2-=1;
이부분이 이해가안됩니다.
ptr1+=1; 과 ptr2-=1;를 증감하고 감소함에따라1칸(4byte)씩옮겨다니며 ptr1과 ptr2를
바꾼다고 이해를 하면 되는건지 궁금합니다.
또한 ptr1은 왜 증감이고 ptr2는 왜 감소연산을 하는지 답변부탁드립니다.
c언어 너무어렵네요 ㅠㅠ
-
큰뫼
ptr2는 배열의 끝부분을 가리키기 때문에 감소를 하고
ptr1은 그 반대이기 때문에 증감을 합니다.