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

C/C++ Q/A
[2041] Re:배열에 대한 질문인데 답변좀 해주세요..
임문환 [mhlim] 1152 읽음    2003-03-03 15:06
int x[2][3];
위의 배열을 가리킬 수 있는 포인터형은
int (*p)[3];
입니다.

한편 함수의 매개변수로 위의 배열을 전단할 때는 아래의 두가지 중 하나로 할 수 있습니다.
void f(int (*k)[3]);
void f(int k[][3]);
호출시: f(x);

만약 3차원 배열이라면
int x[4][7][9];
void f(int (*k)[7][9]);
void f(int k[][7][9]);
호출시: f(x);


그리고,

배열을 이터레이트할 때는 님과같이 모든 원소의 갯수로 하지 않습니다.
이차원 배열은 1차원 배열의 배열이라고 생각하면 됩니다(몇차원이 되든 그 아래차원 배열의 배열이라 생각하면 됩니다).

2차원 배열을 이터레이트하려면
각 차원의 원소 갯수를 한계로 하는 for문을 겹으로 돌리면 됩니다.
위의 배열을 모두 이터레이트하려면 아래와 같은 식으로 하면 됩니다.
int i,j;
for(i=0; i<2 ;i++){
  for(j=0; j<3 ;j++){
    printf("%d", x[i][j]);
  }
}

배열의 차원이 몇 차원이든 그 차원수 만큼의 for문을 겹으로 돌리면 됩니다.


포인터는 메모리의 번지(보통, 변수의 번지)를 값으로 가지는 것입니다.
"포인터의 포인터의 포인터의 포인터의 포인터의 ..... 포인터"가 가능합니다.
int x;
int *p1 = &x;
int **p2 = &p1;
int ***p3 = &p2;
int ****p4 = &p3;
int *****p5 = &p4;
int ******p6 = &p5;
int *******p7 = &p6;
int ********p8 = &p7;

p6을 통해 x를 액세스하려면 int k = ******p6; 이런 식으로 합니다.


마지막으로,

함수 포인터
void f(int (*k)[3]);
위와 같은 함수를 가리킬 수 있는 포인터 형은
void (*pm) (int (*k)[3]);
입니다.

사용방법은 아래와 같습니다.
pm=f;
pm(x);

간단합니다.

그러면 아래 것은 어떨까요?^^
char *(*(*(*(*p)())[10][3])())[5];


전재용 님이 쓰신 글 :
: #include<stdio.h>
: void f(int *r);
: main()
: {
: int x[2][3]={1,2,3,4,5,6};
: f(x);-------------------------------------------error
: }
:
: void f(int *r)
: {
: int i;
: for(i=0;i<=5;i++)
: printf("%d",*(r+i));
: }
:
: 위의 내용을 컴파일 시켰더니 컴파일이 안되고 에러가 나타나더라구요.
: 내용인 즉슨 cannot convert'int[3]*'to'int'라고요..
: 왜 이것이 실행이 안되나요?
: 그래서 &x[0][0]값을 대입하면 실행되구요
: 또한 x의 배열을 다시x[6]으로 잡으면 실행이 되더라구요..
: 좀 가르켜 주세요..참이해가 안되네요.
: 참고로 작업환경은 window turbo c 3.1입니다.

+ -

관련 글 리스트
2036 배열에 대한 질문인데 답변좀 해주세요.. 전재용 1252 2003/03/01
3879     Re:배열에 대한 질문인데 답변좀 해주세요.. 오전&오후 1297 2003/03/05
3878     Re:배열에 대한 질문인데 답변좀 해주세요.. namehood 1301 2003/03/03
2041     Re:배열에 대한 질문인데 답변좀 해주세요.. 임문환 1152 2003/03/03
2039     Re:배열에 대한 질문인데 답변좀 해주세요.. pd 1168 2003/03/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.