C언어

C언어 포인터변수

5_jinseok12 2018. 1. 24. 17:02
728x90

포인터 변수에 대해 알아보자.

 

 

 

ip 라는 변수에는 int형 변수의 주소를 담을 수 있다. int* ip로 해도 상관없다.

변수에 값을 넣고 그 변수의 주소를 담아서 나타내는 것을 포인터변수라고 한다.

 

num 에는 10을 넣고 ip에는 num의 주소값을 넣는다. 주소값은 실행할 때 마다 바뀌지만 num은 고정값이다.

 

ip=&num   :  ip에 num의 주소를 넣음

 

* : 참조 연산자이다. 변수앞에 붙는다.

 

 

 

num의 주소를 ip에 넣는다.

*ip의 값을 20으로 지정해보았다.

 

 

list[0]의 시작주소값이 나타난다.

 

그 시작 주소값을 ip에 넣는다.

시작주소로 가서 시작부터 4바이트 까지(int형이라서)

 

 

 

 

내가 입력한 값이 list[3]으로 가서 입력한 값을 출력하게 된다,

&list[3] , list+3 , *(list+3) 다 같은 값이 나온다.

 

 

 

 

에러가 뜨더라도 실행흔 가능하지만 언제든지 없어지거나 덮어씌여질 수 있으므로 주의하자

 

 

 

 

참조 연산자(*) 와 증감연산자(++,--)

 

 

num 을 만들고 num의 주소를 pnum에 저장한다

printf("num : %d, pnum:%d\n",num,pnum);     //1. pnum 주소의 데이터를 증감

printf("num : %d, *pnum++:%d\n",num,(*pnum)++);   //2. pnum의 값을 증감하여 주소의 데이터를 가지고 온다.

pnum의 ++이 먼저 실행하면 어떤게 먼저 증감하냐에 따라 달라진다.

 

 

 

 

*pnum++;

pnum이 가리키는 위치의 값을 가져온 후 pnum을 증가시킨다

(*pnum)+

*pnum이 가리키는 위치의 값을 가져온후 pnum이 가리키는 위치의 값을 증가(pnum의 값을 증가)

반응형

'C언어' 카테고리의 다른 글

C언어 함수들의 정의  (0) 2018.01.15
C언어 while문(break,continue)  (0) 2018.01.14
C언어 while문과 for문  (0) 2018.01.10
C언어 switch문  (0) 2018.01.09
C언어 if 문  (0) 2018.01.08