도드넷
C언어 - 포인터 개념정리 본문
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 |