전산직 준비/개념 정리
[자료구조론] C 언어 포인터 기호 (*과 &)
투굠이
2021. 1. 9. 00:08
포인터를 나타내는 연산자 *와 &가 어떤 의미인지 헷갈려서 찾아 보았다.
포인터란?
데이터의 주소를 가지는 변수
&
: 변수의 주소를 저장하도록 하는 연산자
int main(void)
{
int i = 1;
char c = 2;
printf("i의 주소: %u\n", &i); // i의 주소: 2205393044
printf("c의 주소: %u\n", &c); // c의 주소: 2205393043
return 0;
}
위 코드에서 &는 주소값 반환의 역할을 한다.
*
: 포인터가 가르치는 값(내용물)을 반환하는 연산자
int main(void) {
int i = 1;
int *p = &i; //포인터 변수인 p는 i를 가르킴 (주소값을 가짐)
printf("%d\n", *p); // 1
*p = 2; // 포인터 변수인 p 는 내용물(값)로 2를 가짐
printf("%d\n", *p); // 2
return 0;
}
- 포인터와 증감연산자
수식 |
동일한 의미 수식 |
내용 |
*p++ |
*(p++) |
p의 값 반환 후 p 증가 |
*++p |
*(++p) |
p 증가 후 p 값 반환 |
(*p)++ |
- |
p 값 반환 후 값 증가 |
++*p |
++(*p) |
값 증가 |