포인터 보는중에 서로 바꾸기가 안되네용.
한말글
질문 제목 : 포인터 보는중에 서로 바꾸기가 안되네용.num1 - num2 , num2 - num1질문 내용 :
#includestdio.h
int main(void)
{
int num1=10;
int num2=10;
int *temp;
int *ptr1 = &num1;
int *ptr2 = &num2;
(*ptr1) += 10; //num1을 10 증가 = 20;
(*ptr2) -= 10; //num2를 10감소 = 0;
temp = ptr1; //temp에 20을 저장
ptr1 = ptr2; //ptr1에 0을 저장
ptr2 = temp; //ptr2에 20을 저장
printf(num1 = %d num2 = %d \n, *ptr1, *ptr2);
위 소스는 열혈 c답변 소스인데요.
#includestdio.h
int main(void)
{
int num1=10;
int num2=10;
int temp;
int *ptr1 = &num1;
int *ptr2 = &num2;
(*ptr1) += 10; //num1을 10 증가 = 20;
(*ptr2) -= 10; //num2를 10감소 = 0;
temp = *ptr1; //temp에 20을 저장
*ptr1 = *ptr2; //ptr1에 0을 저장
*ptr2 = temp; //ptr2에 20을 저장
printf(num1 = %d num2 = %d \n, num1, num2);
}
아래것은 제가만든 소스입니다.
포인터는 그 변수의 주소까지 참조해서 데이터를 저장하는걸로 알았는데요.
열혈c소스에 printf(num1 = %d num2 = %d \n, *ptr1, *ptr2); 대신 printf(num1 = %d num2 = %d \n, num1, num2);
이걸 넣으면 수의 변환되서 저장이 안되어있네요.
아래 소스는 변환되어 저장되어있구요.
그 이유가 무엇일까요?