포인터란?
다른 변수의 주소를 저장하는 변수
그 주소에 해당하는 변수의 값을 자유자재로 이용할 수 있다.
포인터 변수를 사용하려면 같은 타입의 변수로 만들어야 한다.
ex)))int형 변수 = int* 변수명
char형 변수 = char* 변수명
#include <stdio.h>
int main()
{
int variable = 54;
int *pointerVariable = NULL;
pointerVariable = &variable;
printf("variable's value = %d\n", variable);
printf("variable's address = 0x%d\n", &variable);
printf("\n\n");
printf("pointerVariable's value = 0x%d\n", pointerVariable);
printf("pointerVariable's pointer value = %d\n", *pointerVariable);
return 0;
}
함수는 변수를 여러개 받을 수 있어도 변수는 항상 하나만 받을 수 있다.
그렇기 때문에 포인터 변수는 함수간에 유용하게 사용할 수 있다.
#include <stdio.h>
int exampleFunction(int returnVariable, int* pointer);
int main()
{
int returnVariable = 54;
int variable = 10;
int *pointer;
pointer = &variable;
printf("BEFORE\n");
printf("returnVariable = %d\n", returnVariable);
printf("variable = %d\n", variable);
returnVariable = exampleFunction(returnVariable, pointer);
printf("\n\n\n");
printf("AFTER\n");
printf("returnVariable = %d\n", returnVariable);
printf("variable = %d\n", variable);
return 0;
}
int exampleFunction(int returnVariable, int* pointer)
{
returnVariable = 100;
*pointer = 100;
return returnVariable;
}
#include <stdio.h>
void swap(int* a, int* b);
int main()
{
int value100 = 100;
int value200 = 200;
int* pointer_a = &value100;
int* pointer_b = &value200;
printf("BEFORE\n");
printf("value100 = %d\n", value100);
printf("value200 = %d\n", value200);
printf("\n\n");
swap(pointer_a, pointer_b);
printf("AFTER\n");
printf("value100 = %d\n", value100);
printf("value200 = %d\n", value200);
return 0;
}
void swap(int* a, int* b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}