C언어 포인터란?

[C언어] 포인터란?



이번 포스팅에서는 C언어 포인터에 대해서 간단한 설명과 예제를 통해 포인터 사용법을 익혀 보도록 하겠습니다.

 

사실 처음에 C언어를 배울 때 주위 사람들에게 많이 들었던 말 중에 하나가 포인터는 C언어의 꽃이다.” 라는 얘기를 많이 들었습니다.

주위 사람들이 그렇게 이야기했던 이유는 다른 문법에 비해 상대적으로 포인터라는 개념이 살짝? 이해하기 힘들 수 있어서 그런 말들을 많이 들었던 것 같은데..

 

막상 개념을 제대로 익힌다면 전혀 어려운 것이 아니다 라는 것을 알 수 있습니다.^^

 

그럼 도대체 포인터란 무엇인가?

-      포인터란 간단히 이야기를 하면 주소를 저장하는 변수입니다.

 

어떤 값의 주소라고 얘기를 하면 그 주소는 해당 값이 저장된 컴퓨터 메모리 상의 주소를 의미합니다.

Ex)0x123456789 이렇게 생겼습니다.

 

단순히 말로 설명을 하면 이해가 안될 수 있기 때문에 그림을 통해서 설명을 드리도록 하겠습니다.


 



위 이미지를 보게 되면 int num = 5라고 해서 현재 정수 타입의 num이라는 이름을 가진 변수가 선언되어 있고 num5라는 값을 저장하고 있습니다


그러면 실제 컴퓨터 상의 메모리는 위와 같이 메모리 공간 어느 곳에 5라는 값을 저장하고 현재 5가 저장되어 있는 주소는 0x124입니다.

 

여기서 말하는 주소를 가리키는 것이 바로 포인터라는 것입니다


그럼 포인터 변수가 어떻게 주소를 가리키고 있는지 아래 그림을 통해 알아보도록 하겠습니다.

 


 



위 그림을 보게 되면 현재 int num = 5라고 해서 현재 주소 : 0x124번지에 5라는 값이 저장되어 있는 것을 확인할 수 있는데 오른쪽을 보시게 되면 int *p = &num이라고 해서 정수형 포인터 변수 p를 선언하였고 해당 포인터 변수는 &num이라고 해서 현재 num값이 저장되어 있는 주소를 저장하고 있습니다.

 

바로 이것이 포인터의 개념입니다. , 포인터는 주소를 저장하는 변수입니다. (크기는 4Byte입니다.)

 

처음에는 당연히 한번에 이해가 가기 힘들겠지만..그림을 그리면서 하시면 이해가 상당히 잘 될거라고 생각합니다.^^


 

[포인터 예제]


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

#include <iostream>

 

using namespace std;

 

int main(void)

{

    int number = 0//일반 정수형 number 변수 선언

    int *= NULL//정수형 포인터 변수 p 선언하고 NULL 초기화

 

    cout << "숫자를 입력해 주세여 : "//숫자 입력

    cin >> number; // 숫자 입력

    

    p = &number; //포인터 변수 p &num num 값이 저장되어 있는 주소 저장

 

    cout << "number :" << number << endl//number  출력

    cout << "*p : " << *<< endl;        //포인터 p 가리키는 메모리 주소에 저장되어 있는  출력

 

    cout << "&number : " << &number << endl;   //num 주소 출력

    cout << "p : " << p << endl;               //포인터 변수 p  가리키는 주소 출력

 

    system("pause");

    return 0;

}

Colored by Color Scripter

cs

 


[출력 결과 화면]



여기까지 따라하셨다면 충분히 포인터의 아주 기초적인 개념에 대해서는 이해하셨다고 생각합니다


포인터는 매우 중요한 개념이기 때문에 계속 반복 학습을 통하여 연습을 하시면 좋겠습니다.^^

 

감사합니다.^^


728x90

이 글을 공유하기

댓글

Designed by JB FACTORY