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

C/C++ Q/A
[4982] Re:[질문]포인터에 관한건데요. 가르쳐주시면 감사하겠습니다.
[] 1407 읽음    2005-03-29 22:31
타이라 님이 쓰신 글 :
: 안녕하세요.
: 제가 드리고 싶은 질문은 C언어에서
:
: int(*Ptr)[3]  과   int*(Ptr[3]) 의 차이점을 좀 가르쳐주세요
:
: 그리구 가능하시다면 차이를 확인할수 잇는 간단한 예제나 프그램을 보여주시면
:
: 감사하겠습니다.

1. int(*Ptr)[3]
int [3]을 가리키는 포인터 Ptr.
즉, 배열(int 형 자료 3개를 갖음)을 가리키는 포인터 Ptr

2. int*(Ptr[3])
이는 int *Ptr[3]과 같음.
배열 Ptr이며 이 배열은 int* 형 자료 3개를 갖음. 즉, int 포인터 배열임.

#include<stdio.h>
#pragma argsused
int main(int argc, char* argv[])
{
  int ia[2][3]={{0,1,2},{7,8,9}};
  int (*Ptr1)[3];
  int* (Ptr2[3]);

  printf("\n%d %d %d",ia[0][0],ia[0][1],ia[0][2]);  //0 1 2
//Ptr1=ia;로 하면 ia 대신 Ptr1을 사용할 수도 있습니다. 보통 함수에 매개변수로 넘겨줄 때 그렇게 합니다.
  Ptr1=&ia[0];
  printf("\n%d %d %d",Ptr1[0][0],Ptr1[0][1],Ptr1[0][2]); //0 1 2
  ++Ptr1[0][0];  ++Ptr1[0][1];  ++Ptr1[0][2];
  printf("\n%d %d %d",ia[0][0],ia[0][1],ia[0][2]); // 1 2 3

  Ptr1=&ia[1];
  printf("\n%d %d %d",ia[1][0],ia[1][1],ia[1][2]);  //7 8 9
  printf("\n%d %d %d",Ptr1[0][0],Ptr1[0][1],Ptr1[0][2]); //7 8 9

  Ptr2[0]=&ia[0][0];
  Ptr2[1]=&ia[0][1];
  Ptr2[2]=&ia[0][2];
  printf("\n%d %d %d",*Ptr2[0],*Ptr2[1],*Ptr2[2]); // 1 2 3
  ++*Ptr2[0];
  ++*Ptr2[1];
  ++*Ptr2[2];
  printf("\n%d %d %d",ia[0][0],ia[0][1],ia[0][2]); // 2 3 4

  Ptr2[0]=&ia[0][1];
  Ptr2[1]=&ia[0][2];
  Ptr2[2]=&ia[0][0];
  printf("\n%d %d %d",*Ptr2[0],*Ptr2[1],*Ptr2[2]); // 3 4 2
return 0;
}

+ -

관련 글 리스트
4978 [질문]포인터에 관한건데요. 가르쳐주시면 감사하겠습니다. 타이라 1457 2005/03/29
4982     Re:[질문]포인터에 관한건데요. 가르쳐주시면 감사하겠습니다. 1407 2005/03/29
4983         Re:Re:감사합니다.. 이해하는데는 좀 걸리겠네요..^^ 타이라 1443 2005/03/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.