[C언어] 포인터 변수의 선언
안녕하세요 지토우에요.
지난 시간에는 포인터가 어떤 것인지에 대해 간략하게 배웠지요?
오늘은 포인터 변수의 선언과 사용에 대해 배울 것입니다.
그럼 오늘도 열공합시다 ^0^
1. 포인터 변수의 선언
포인터 변수도 변수이므로 사용하기 위해서는 선언해야 합니다.
다음은 포인터 변수의 선언 형식을 나타내고 있습니다.
포인터 변수의 선언은 자료형 다음에 * 연산자를 붙이고 포인터 변수의 이름을 쓰는 식입니다.
자료형 포인터 변수의 자료형을 지정, 자료형 다음에 * 연산자를 붙임
포인터 변수 이름 주소를 저장할 변수의 이름을 지정
NULL 포인터 설정 포인터 변수 선언 시 NULL 로 초기화
NULL 포인터란 무엇일까요?
포인터 변수에 아무 주소도 저장하지 않겠다는 의미입니다.
NULL은 '널' 이라고 읽습니다.
또, 사용할 때는 항상 대문자를 사용해야 합니다.
이 코드에서 int* p1, char* p2, double* p3의 의미는 무엇일까요?
int* p1 은 p1에 int 형 주소를 저장하는 포인터 변수를 선언한 것입니다.
나머지 char* p2와 double* p3도 같은 연장선이라 보면 되겠습니다.
일반 변수의 선언과 달리 포인터 변수는 자료형 뒤에 *을 붙이고, NULL포인터로 초기화 해야 합니다.
그렇다면 이제 예제를 분석해봅시다.
4행과 5행에서 포인터 변수를 선언했습니다.
선언한 포인터 변수의 이름은 각각 cp, ip 입니다.
둘 다 4바이트입니다.
자료형 다음에 * 연산자가 붙어 있는 변수는 모두 포인터 변수라고 한다는 점을 알아두세요!
7행과 &cp(변수 cp의 주소, 40fac4), cp(변수 cp의 메모리 공간, 0), *&cp(변수 cp의 메모리 공간, 0)을 출력합니다.
여기서 cp와 *&cp는 같은 메모리 공간입니다.
8행에서는 &ip(변수 ip의 주소, 40fab8), ip(변수 ip의 메모리 공간, 0), *&ip(변수 ip의 메모리 공간, 0)을 출력합니다.
출력 결과를 보면 현재 cp와 ip에는 데이터가 0이 저장되어 있습니다.
0이 저장된 이유는 4행과 5행에서 포인터 변수 선언 시 NULL로 초기화했기 때문입니다.
NULL은 아스키 값으로 0입니다.
10행과 11행에서, 포인터 변수의 크기는 모두 4바이트 입니다.
32비트 운영체제를 기준으로, 포인터 변수는 모두 4바이트의 크기를 가집니다.
또, 다양한 타입의 포인터 변수가 왜 있는지에 대해 알아야 하는데요.
바로 포인터 변수로 변수를 참조하는 경우 몇 바이트씩 참조해야 하는지를 알려주기 위해서 입니다.
char* 형 포인터 변수 cp는 변수를 참조할 때 1바이트씩,
int* 형 포인터 변수는 변수 ip는 변수를 참조할 때 4바이트씩 주소를 참조하라는 뜻이지요.
아래는 위의 소스 코드의 결과입니다.
'IT > C언어' 카테고리의 다른 글
발판 만들기 프로그램 (0) | 2017.11.13 |
---|---|
[C언어] 포인터 이해하기 (3) | 2017.08.10 |
[C언어] 1차원 배열의 주소와 값의 참조 (4) | 2017.08.07 |
[C언어] 배열 선언 시 주의할 점 (0) | 2017.08.07 |
[C언어] 배열에 데이터 저장하기 (0) | 2017.08.04 |