Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[653] Re:초짜의 질문 지송합니다.
김인구.구야 [whileone] 1825 읽음    2002-05-20 13:21
2차원 배열을 포인터로 핸들하기 위해
2차원 배열을 가리키는 포인터 변수를 선언한 것입니다.

전 그냥 간단히 소개만 하겠습니다.
책을 보면 아~! 하지만 돌아서면 어!!?? 하기 때문입니다...
"터보C정복"과 다른 포인터 관련 책에서 본 내용입니다.

변수선언
포인터 변수선언
포인터 변수에 변수의 주소 할당
변수 엑세스 방법

int i;
int *pi;
pi = &i;
*pi

int i[3];
int *pi;
pi = i; 또는 pi = &i[0];
*(pi+n)

int i[3][2];
int (*pi)[2];
pi = i; 또는 pi = &i[0];
*(pi[n]+m)

int i[3][2][2];
int (*pi)[2][2];
pi = i; 또는 pi = &i[0];
*(pi[n][m]+h)

다차원 배열을 포인터로 다루는 이유 4가지
1. ++, -- 등의 연산자를 사용하기 위해
2. 연산 속도가 빠르며 기계어 코드가 간결하기 때문에
3. 매개변수가 다차원 배열인 함수를 작상하기 위해
4. 다차원 배열을 일차원 배열로 다루기 위해
(3번이 가장 유력한 이유)

예) 2차원 배열을 주고 받는 함수
#include <xxx.h>

void func(int (*a)[3]);

void main()
{
    int x[4][3];
    ....
    func(x); // or func(&x[0]);
}

void func(int (*a)[3])
{
    ... *(a[0]+0) ... // 2차원 배열의 첫번째 요소 엑세스
}

참고로...
int *ptr[4]; or int *(ptr[4])
은 요소 4개를 가진 포인터 배열입니다(8바이트(2X4) 차지)
int (*ptr)[4];
은 열의 요소 개수가 4인 이차원 배열을 가르키는 포인터 변수입니다(2바이트 차지)

+ -

관련 글 리스트
652 초짜의 질문 지송합니다. 김경래 1761 2002/05/19
653     Re:초짜의 질문 지송합니다. 김인구.구야 1825 2002/05/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.