728x90
반응형
데이터 구조를 처음 시작 할때 기본적으로 알아야 하는 것들은 많다.
순환, 구조체, 배열, 포인터 를 대표적으로 뽑을 수 있는데, 이들 중 포인터에 대해서 이야기 해보려고 한다.
1. 포인터 : 다른 변수의 주소를 가지고 있는 변수
int a = 100;
int *p; // p는 int형을 가리키는 포인터 라는 것을 정의!!
p = &a; // 변수의 주소는 & 연산자를 변수에 적용시켜서 추출 할 수 있다.
포인터에서 중요한 개념 두가지! &연산자 , *연산자
&연산자 - 주소 연산자
&연산자는 변수의 주소를 추출하는 연산자이다.
p라는 것은 이제 "주소" 만 가리킬 수 있는 화살표인데, 그 화살표가 a의 주소를 가리키게 만들고 싶으면,
"p = &a" ,즉 &를 통해서 a의 주소를 추출한 후 이것을 p라는 화살표랑 매치한다.
* 연산자 - 간접참조 연산자
*연산자는 포인터가 가리키는 장소에 값을 저장하는 연산자이다.
예를 들어 p가 가리키는 장소에 200을 저장하려면 *p = 200; 라고 하면 된다.
swap 함수 만들어 보기
#include <stdio.h>
void swap(int* px, int* py) { //두개의 포인터를 선언!
int tmp;
tmp = *px;
*px = *py;
*py = tmp;
}
int main(void) {
int a = 1;
int b = 2;
printf("%d %d\n", a, b);
swap(&a, &b); // a, b가 가리키고 있는 두 값을 가져와야 하기 때문에 &를 쓴 것!
printf("%d %d", a, b);
}
결과는 밑과 같다.
1 2
2 1
즉 값이 swap 됬다는 것을 알 수 있다.
반응형
'코딩 > 데이터 구조' 카테고리의 다른 글
6. 데이터 구조 - 스택의 응용(후위 표기 수식의 정의와 계산) (2) | 2024.09.13 |
---|---|
5. 데이터 구조 - 동적할당(malloc,realloc)과 스택(stack) (0) | 2024.09.06 |
4. 데이터 구조 - stack의 구조체화 (0) | 2024.08.11 |
3. 데이터 구조 - ADT의 개념과 stack의 이해 및 구현 (0) | 2024.08.11 |
1. 데이터 구조 공부를 시작하며... (0) | 2024.08.08 |