본문 바로가기

전산직 준비/개념 정리

[자료구조론] C 언어 포인터 기호 (*과 &)

포인터를 나타내는 연산자 *와 &가 어떤 의미인지 헷갈려서 찾아 보았다.

 

 

이 게시글에서 말하는 포인터와 좀 다르지만 약간의 의미는 같다고 생각한다! ( 주소를 가르치는것이 포인터)

포인터란?

데이터의 주소를 가지는 변수

 

&

: 변수의 주소를 저장하도록 하는 연산자

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)

값 증가