관리 메뉴

도드넷

C언어 - 포인터 개념정리 본문

창고/C언어 [폐쇄]

C언어 - 포인터 개념정리

도드! 2014. 5. 8. 14:49



5월 22일 글을 수정및 추가함. 네이버 검색의 미리보기 내용과 다를 수 있음 -_- ;;




&변수이름 : 해당 변수의 메모리 주소를 반환.

*변수이름 : 해당 변수는 "포인터 변수"임.

포인터변수 : "주소값"이 저장되는 변수로 해당 주소값에 해당하는 변수에 접근하는데 쓰임.


----------------------------------------------------------------------------------------------------------


예제1 - 포인터로 변수에 접근

int a = 100;

int *b; 


b = &a; 


*b = *b + 1;

 

printf("%d", *b); 


결과 : 101 이 출력된다.


설명 : 포인터 변수 b에 저장된 주소값은 a의 주소값. *b를 통해 a에 접근함


"포인터"는 변수 외에도 배열, 함수에도 사용이 가능하다. 


참고

*b = *b + 1; 과 (*b)++; 은 값에 접근해서 값을 수정하는 것

하지만 *b++; 는 주소값을 수정하는 행위


----------------------------------------------------------------------------------------------------------


예제2 - 포인터로 배열에 접근

int a[300]; = {100, 200}

int b;


b = a; 


*(b+1) = 40;


printf("%d", *b); 

printf("%d", *b+1);

printf("%d", *(b+1)); 


결과 : 100, 101, 40이 출력된다.


설명 : 배열 변수는 일반 변수와 달리 주소값을 저장할때 &를 붙이지 않고 그냥 쓴다. b = a; 

*b는 배열의 첫번째 값 a[0]을 가리킨다. *(b+1)은 배열의 두번째 값 a[1]을 가리킨다. 

*b+1을 하면 *b 가리키는 값에 +1을 하겠다는 말이 된다. 


----------------------------------------------------------------------------------------------------------


예제3 : 포인터로 함수에 접근


int main(void)

{

int (* b)(int para) = a;

}


int a(int para)

{

return para + 1;

}


설명 : 타입 (* 포인터이름)(매개변수) = 함수이름; ... WTF? 이걸 어디다 쓰는거야 

어쨋든 핵심은 다 똑같음. b에 a라는 함수의 주소를 저장했다는거...



포인터의 핵심 키워드 : 주소, 접근 




Note...

포인터쪽 아직 많이 부족합니다. 좀더 독학해보고 내용 계속 업데이트하겠습니다.

도움이 되었으면 좋겠습니다.  

반응형

'창고 > C언어 [폐쇄]' 카테고리의 다른 글

C언어 - 사칙연산 프로그램  (0) 2014.05.09
C언어 - fflush(stdin)란?  (0) 2014.05.09
C언어 - 문자열  (0) 2014.05.08
C언어 - 배열  (0) 2014.05.08
C언어 - 형식 지정자  (1) 2014.05.06
Comments