[C언어] 포인터

Yuri Lee·2023년 5월 9일
0

C언어

목록 보기
1/1

포인터란?

C언어에서 포인터란 메모리의 주소값을 저장하는 변수이며, 포인터 변수라고도 부른다. char형 변수가 문자를 저장하고, int형 변수가 정수를 저장하는 것처럼 포인터는 주소값을 저장한다.

intn = 100;
int *ptr = &n; //포인터의 선언

포인터 연산자

C언어에서 포인터와 연관되어 사용되는 연산자는 다음과 같다.
1. 주소 연산자(&)
2. 참조 연산자(*)

주소연산자(&)

주소연산자는 변수의 이름 앞에 사용하여, 해당 변수의 주소값을 반환한다.
'&' 기호는 앰퍼샌드라고 읽으며, 번지 연산자라고도 불린다.

참조연산자(*)

참조연산자는 포인터의 이름이나 주소 앞에 사용하여, 가리키는 주소에 저장된 값을 반환한다.
C언어에서 '*"기호는 사용하는 위치에 따라 다양한 용도로 사용된다.
이항 연산자로 사용하면 곱셈 연산으로사용되며, 포인터의 선언 시나 메모리에 접근할 때도 사용된다.

포인터의 선언

C언어에서 포인터는 다음 문법에 따라 선언한다.

타입*포인터이름;

타입이란 포인터가 가리키고자 하는 변수의 타입을 명시한다.
포인터를 선언한 후 참조 연산자(*)를 사용하기 전에 포인터는 반드시 먼저 초기화되어야 한다. 그렇지 않으면 의도하지 않은 메모리의 값을 변경하게 되기 때문이다. 따라서 C컴파일러는 초기화하지 않은 포인터에 참조 연산자를 사용하면 오류를 발생시킨다.

따라서 다음과 같이 포인터의 선언과 동시에 초기화를 함께 하는 것이 좋다.

타입*포인터이름 = &변수이름;

또는

타입*포인터이름 = 주소값;

포인터의 참조

C언어에서 선언된 포인터는 참조 연산자(*)를 사용하여 참조할 수 있다.
다음 예제는 포인터의 주소값과 함께 포인터가 가리키고 있는 주소값의 데이터를 참조하는 예제이다.

int x =7;
int*ptr = &x;
int*pptr = &ptr;

(예제)

#include <stdio.h>

int main(void)
{
	int num01 = 1234;
    double num02 = 3.14;
    
    int*ptr_num01 = &num01;
    double*ptr_num02 = &num02;
    
    printf("포인터의 크기는 %d입니다.\n", sizeof(ptr_num01));
    printf("포인터 ptr_num01이 가리키고 있는 주소값은 %#x입니다. \n", ptr_num01); //%#x : 주소값 표시 서식 지정자
    

REFERENCES

http://www.tcpschool.com/c/c_pointer_intro

profile
개발자 이유리

0개의 댓글