C/기초

포인터

appmaster 2019. 7. 26. 17:09

C언어의 가장 큰 특징이자 장점이라고 할 수 있는 부분이다. 특정 데이터가 저장된 메모리의 주소를 저장하는 변수라고 할 수 있다. 다른 곳의 주소 그 자체를 가리키기 떄문에 이를 응용하여 다양한 연산을 수행 할 수 있다. 뿐만 아니라 프로그램의 어떠한 위치에서 시행되더라도 특정한 주소를 그대로 이용하기 떄문에 값이 즉시 변경된다는 특징을 가지고 있다.

다른변수가 위치한 그 공간을 바로 접근함으로써 값을 바꾸거나, 바로 처리 할 수 있다. 

 

 

포인터를 사용할떄는 꼭 *를 사용해야한다. 또한 메인메소드에서 매개변수를 넣어줄때도 &을 사용해야한다.(주소를 가리킬때는 &을 사용하기 떄문이다.)

실제로 swipe함수는 많이 사용되며 잘 이해해야한다. 다양한 운영프로그램을 사용하기도 하면서 해킹할떄도 이용하기도 한다.

#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif

#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\n y = %d\n", x,y);
	return 0;
}

 

int x = 70;
int *y = &x;

*y = 70;
x = 70;

*y = x;

y = &x;


y의 주소값은 00AA00BB 이지만, 
*y의 주소값은 70이 되는 것이다. (왜냐하면 x를 가르킨값이기 때문이다.)

 

'C > 기초' 카테고리의 다른 글

구조체  (0) 2019.07.30
문자열  (0) 2019.07.30
다차원 배열  (0) 2019.07.26
배열이란  (0) 2019.07.25
조합이란  (0) 2019.07.25