반응형
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;
}
포인터 변수를 괄호로 감싸고, 옆에 대괄호 안에 몇칸씩 이동할지를 입력해주면 됩니다.
반응형
'C언어 > 포인터' 카테고리의 다른 글
[C언어] 함수의 주소를 가리키는 포인터 (0) | 2022.07.07 |
---|---|
[C언어] 배열포인터 vs 포인터배열 (0) | 2022.07.07 |
[C언어] 포인터 연산 (포인터에 1을 더하면?) (0) | 2022.07.07 |
[C언어] 포인터의 주소를 저장하는 더블포인터 (포인터의 포인터) (0) | 2022.07.06 |
[C언어] 포인터 변수가 일반변수와 다른 점 (0) | 2022.06.29 |
댓글