ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C,C++] 포인터와 배열
    기초/C,C++ 2017. 3. 2. 09:40

    포인터는 #1 주소값, #2 포인터 타입이 필요하다.

    포인터는 항상 가르키는 대상의 맨앞 주소를 가르키고 있다.

    배열은 이름자체가 [0]번쨰 방을 가르키고 있으며 변수의 타입을 가지고있다.


    그럼 차이점은 무엇인가?

    포인터는 "포인터 변수"이고

    배열은 "포인터 상수"입니다.


    변수 = 바꿀 수 있다.

    상수 = 바꿀 수 없다.

    포인터는 가르키는 대상을 변경할 수 있지만

    배열은 항상 자기 자신의 0번째 인덱스를 가르킵니다.



    포인터와 배열에는 덧셈을 할 경우 변수타입의 바이트가 더해집니다.


    예를들어 arr = 1235008일 경우

    arr + 1 = 1235012가 됩니다.


    int 타입이 4바이트로 인식되어 자료형의 크기가 더해진겁니다.

    그래서 arr = arr[0]을 가르키므로

    arr + 1 = arr[1]을 가르키게 됩니다.


    [결과창]



    그렇다면 배열을 포인터로 표현이 가능할까?

    네 가능해요

    배열은 포인터 상수라고 표현을 했을 때

    상수에 다른값을 못 넣을 뿐이지 변수에는 상수값을 넣는게 가능합니다.


    물론 포인터도 배열로 포인터로 표현이 가능합니다.

    [결과창]



    #1 포인터와 배열

    arr을 선언하고 pArr 포인터 변수에 arr의 주소값을 넣었을 때

    pArr과 arr은 똑같은 주소를 가르키고 있는것을 볼 수 있습니다.


    #2 배열을 포인터처럼 가져와서 사용하기

    배열 arr을 포인터처럼 표현해서 사칙연산을 할 수 있습니다.


    #3 포인터를 배열처럼 배열을 포인터처럼 표현할 수 있습니다. 

    따라서 둘은 주소값을 표현하는 방식이므로 같은 의미이지만

    다른 점 한가지만 기억하시고 사용하시면 될 수 있을것 같습니다.

    포인터는 변수

    배열은 상수

    '기초 > C,C++' 카테고리의 다른 글

    [C/C++] 클래스, 구조체, 함수의 차이점  (0) 2017.03.03
    [C/C++] 반환 형식 ,Call by ~  (0) 2017.03.02
    [C/C++] 포인터  (0) 2017.02.28
    [C/C++] 문자열 라이브러리 함수  (0) 2017.02.27
    [C/C++] 키워드  (2) 2017.02.24

    댓글

Designed by Tistory.