C언어 기초강좌10 포인터
본문 바로가기
프로그래밍/C언어 기초 강좌

C언어 기초강좌10 포인터

by 124578 2021. 2. 22.

안녕하세요.

 

오늘은 C언어 포인터에대해 알아보겠습니다. 

 

C언어의 포인터란 값을 저장하는 것이 아니라 주소를 저장하는 것이라고 보시면 됩니다.

 

즉 주소를 저장한다는 것은 컴퓨터 메모리상의 주소를 의미합니다.  선언방법은 아래와 같습니다.

 

int *a;

 

위와같이 변수이름 앞에 *을 붙여 주면 포인터형 변수 선언이 됩니다. *의 느낌이 중요합니다.

 

일반변수 int a; 와 변수 int *a; 는 앞의 *첨두자에 따라 달라집니다.

 

이 *첨두자가 붙음으로써 어떤 검침자 같은 느낌이라고 느꼇다면 제대로 느낀 것입니다.

 

변수를 저장하는 일반적인 것이 아닌 변수 메모리상의 주소를 지정해주는 검침자 같은 것이 됩니다.

 

 

기본적인 사용법은 아래와 같습니다.

 

예제코드

 

 int b=1; // 일반변수 선언

 int *a ; // 변수의 주소를 저장할 포인터 선언

 a = &b;  // 변수b의 주소를 포인터 a에 저장

 

 

변수의 주소값을 포인터 변수에 저장하기 위해 변수 앞에는 &첨두자를 붙여 줍니다.

 

printf("%p \n", &b); //변수 b의 주소(&b)를 16진수(%a)로 출력합니다.

 

결과: 00EFFABC

 

printf("%p \n", a ); // 포인터 변수 a의 값도 동일합니다.

 

결과: 00EFFABC

 

printf("%p \n", *a); //포인터 변수의 주소가 아닌 저장된 값을 확인하기 위해서 *첨두자를 붙여 줍니다.

 

결과: 00000001

 

 

위의 예제코드 처럼 int 형 변수를 선언해서 결과 주소값이 0x00EFFABC에 저장되어 있다면 실제 아래 그림처럼 저장됩니다. int 형 변수는 메모리에서 4byte를 차지 합니다.

 

물론  double형 포인터,char형 포인터 등은 메모리에서 차지하는 크기가 모두 달라질 것입니다.

 

- 포인터사용의 이점

 

1. 메모리에 직접 접근이 가능

2. 구조체등 복잡한 함수에 직접 접근 가능

3. Call by refernce방식 가능

4. 메모리 동적할당 가능

 

 

 

 

 

 

 

 

 

 

 

 

 

 

댓글


TOP

TEL. 02.1234.5678 / 경기 성남시 분당구 판교역로