본문 바로가기
C언어/포인터

[C언어] 배열포인터 (배열을 가리키는 포인터)

by bigpicture 2022. 7. 7.
반응형

1차원 배열은 포인터를 이용하여 배열을 가리킬 수 있습니다. 2차원 이상인 경우 일반 포인터로는 배열을 가리킬 수 없습니다. 이를 이해하는 것이 목적입니다. 

먼저 1차원 배열을 하나 만들고 포인터로 가리켜봅시다. 

#include <stdio.h>

int main ()
{
    int ar[3];

    int *par;
    par=ar;

}


오류가 발생하지 않습니다. 이번에는 2행3열의 배열의 이름을 포인터 변수에 입력해봅시다. 

#include <stdio.h>

int main ()
{
    int ar[2][3];

    int *par;
    par=ar;

}

 

아래와 같은 오류가 발생합니다. 


ar은 3열을 갖는 배열이라서 포인터 연산을 할 때, 1을 더하면 세칸씩 이동한다는 것을 지정해주어야 합니다. 포인터 연산에서는 1을 더하면 다음 행으로 이동합니다. 다음 행이라는 것은 열의 개수만큼 shift 된 것을 의미합니다. 따라서 아래와 같은 방법으로 포인터를 정의합니다. 

#include <stdio.h>

int main ()
{
    int ar[2][3];

    int (*par)[3];
    par=ar;

}

 

포인터 변수를 괄호로 감싸고, 옆에 대괄호 안에 몇칸씩 이동할지를 입력해주면 됩니다. 

반응형

댓글