포인터 변수에 대해 알아보자.
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 |