//두 변수의 값을 서로 변환하는 포인터 함수
#include <stdio.h>
void swap(int* x, int* y)
{
int temp;
temp = *x;
*x = *y;
*y = temp;
}
int main(void)
{
int x = 1;
int y = 2;
swap(&x, &y);
printf("x = %d\ny = % d\n", x, y);
return 0;
}
출력은 x와 y값이 바뀐채로 출력이 된다. swap(&x, &y);를 통해 void swap(int* x, int* y) 함수가 호출이 되었고
swap 함수를 통해 x가 가리키는 값과 y가 가리키는 값이 바뀌게 되면서 x y의 값이 서로 바뀌었다.
포인터 추가 개념이해
int x = 70;
int *y = &x; (x주소를 가리키도록 선언)가 선언되었다고 하면, 하나의 메모리 공간 안에 x가 차지하는 메모리 공간
이 할당되고, x값으로 70이 들어간다.
또, int *y = &x;는 메모리 공간이 할당되고 x주소를 가리킨다. 이때 y값은 위치 값(주소 값)이다. <*y 아님!>
*y는 y가 의미하는 주소가 <x주소 가리키도록 선언됨>, 의미하는 값을 불러오라 한다고 생각할 수 있고, 그 값은 여기서 70이다.
또한 , x = 70이다.
여기서 y의 값은 메모리 주소 값 그 자체이다. (&x)
즉 x = *y이고 &x = y이다.
int main(void)
{
int i = 10;
int* p;
p = &i;
printf("i = % d\n", i);
*p = 20; / / p가 의미하는 주소? i의 주소를 가리킴, i의 주소가 의미하는 값은? 10 임. 그 값이 20으로 변경된다.
printf("i = % d\n", i);
return 0;
}
동빈나 유튜브를 통해 부족한 개념을 바로 잡는 중입니다.