창조유저그룹-커즈닷컴
Window close
ID :     PASS :   
   
  처음으로
  창조
  창조 소개
창조 다운로드
CUGz.com 소개
온라인 도움말
  커뮤니티
  가입인사
자유게시판
Q/A게시판
TIP/TECH
열린강좌
자주하는질문
아이디어게시판
  자료실
  소스자료실
프로그램자료실
기타자료실
명예의 전당
이미지 자료실
  지원/기타
  표준용어재정
구글 웹서치  
관리자 전용


LIST ALL
Posted by ps.이진백2004-12-31 15:43:35, Hit : 6318
[ps.구루 강좌 #12♭]포인터를 왜 씁니까?
Homepage : http://gpro.ev7.net/
Post URL : http://cugz.sjworks.net/bbs/zboard.php?id=open_lec&no=58




 작성자   : 조무영 [moonyeom] 조회: 17, 줄수: 14, 분류: Etc.




[답변] 포인터를 왜 씁니까?




말씀대로, 데이타가 있는 곳의 주소가 필요할때 쓰는거죠...
몇몇 용도로만 쓰는게 아니라, 필요한 용도가 워낙 많으니
"포인터는 이럴때에 쓰는거다"라고 딱 꼬집어 말씀드리기엔 너무 방대하겠네요.
암튼 포인터 없이도 지금까지 프로그래밍에 불편이 없으셨다면
"포인터는 이런 점이 좋다"는 설명을 한들 피부에 와닿지 않겠지요.
역시 그냥 책으로 공부해서 아는것과 "필요에 의해서" 익히는 것과는 다른가봐요...

ps.구루 wrote:
> 이전부터 여럿 포인터를 이용한 강좌와 소스를 봐왔습니다.
> 하지만, 왜 기본 형식에 포인터를 더하여 쓰는 경우가 있는지 궁금합니다.
> 그러니까, 포인터를 어떤 용도로 쓰는지...
> 포인터가 좋은 점은 무엇인지...
> 제가 아는 포인터에 대한 개념은 그저 메모리 주소를 가리킨다. 그것 뿐입니다.
> 2가지를 알고 싶습니다.
http://www.delmadang.com/

확실하게 알아보고자 델마당에 제가 질문했습니다.
역시 이게 제일 확실한 답인듯 싶네요.

다른 포인터 자료도 찾아보았습니다.






  작성자   : 델파이사랑 수정: 1, 조회: 7, 줄수: 22, 분류: Etc.




[답변] 흔히들 포인터는 양날의 칼이라고 표현합니다.




조무영님 말씀대로 쓰임새가 너무 많아서 어느 경우에 사용하는지
모두 기술하기는 어렵구요. 대개의 경우 메모리를 직접 access 할 때
사용합니다. 그럼 왜 직접 메모리를 access하느냐 속도때문이죠.
그럼 포인터를 사용 안하면 속도가 느리냐.. 그것은 아니구요.
포인터로 처리하는 것이 좀더 편하기 때문이죠.

화상처리나 게임같은 분야에서는 포인터가 기본이지만 일반 응용프그램에서는
포인터를 전혀 사용하지 않고도 프로그래밍이 가능합니다.
하지만 Windows API를 사용할 때는 어쩔 수 없이 포인터를 사용해야합니다.
Windows API가 call by value만 지원하는 C언어, 어셈블러로 개발되었기 때문이죠.
전달 인자값을 변경하고자 할 경우에는 포인터를 넘겨서 call by reference를
흉내냅니다. Pascal은 원래 call by reference를 지원하기 때문에 굳이 포인터를
사용하지 않아도 됩니다. 물론 전달인자 하나 때문에 포인터를 사용하는 것은 아니구요.
예를 들자면 그렇다는 겁니다.
반면 메모리를 직접 access하기 때문에 갖는 단점도 있습니다. 엉뚱한 메모리를 access해서 메모리 침범이 발생하는 경우죠. 더 심각한 것은 그런 논리적인 버그를 찾기가 쉽지 않다는 것입니다.

그래서 흔히들 포인터는 양날의 칼이라고 표현합니다.

일부 고급 언어에서는 포인터 자체를 지원하지 않는 경우도 있죠. Java처럼..
C#같은 경우에도 포인터를 지원하기는 하지만 아주 특수한 경우(위에 예기한것처럼 API를 호출할 경우)에만 사용하도록하죠.






이전: [질문]포인터를 왜 씁니까?
다음:
[답변] 포인터를 왜 씁니까?
2004/12/31(19:10)
델마당








  작성자   : 오범석 조회: 1473, 줄수: 63, 분류: 기타




포인터는 목욕탕에서도 볼수 있다?





예전에 친구에게 C 언어의 포인터를 이해시키기 위해서 목욕탕 옷장을 예를 든적이 있습니다.

그때 했던 얘기가 뭐였냐하면...

목욕탕과 포인터를 비교해 보겠습니다.

1. 목욕탕에는 번호표가 붙은 여러개의 옷장이 있고 여기에는 옷이나 기타 물건이 보관되어 있습니다.
   ->
   각각의 메모리 번지(목욕탕에 붙은 번호표에 해당하는 옷장)에는 데이터(옷이나 기타물건)가 저장되어있습니다.

2. 옷장에는 해당 옷장을 열수있는 열수있는 열쇠가 있습니다. 이 열쇠에도 번호표가 붙어있죠.
   여기서 열쇠는 포인터 변수에 해당하고 열쇠에 붙어있는 번호표는 실제 포인터 변수에 들어있는 값에 해당합니다.
   메모리의 특정번지(특정 옷장)에 접근하기 위해서는 접근할 메모리 주소를 알고있어야하는데 포인터 변수에는
   해당 메모리의 주소가 들어있습니다.
   옷장 열쇠에도 보면 번호표가 붙어있는데 이게 실제 포인터 변수에 들어있는 값이라고 생각하면 됩니다.

3. 델파이에서 포인터변수에 들어있는 번지의 데이터를 가지고 오기 위해서 다음과 같은 방법을 사용합니다.
  
   var
     P: PChar; (* ^Char --> 이건 열쇠를 만드는 겂니다. 하지만 아직 번호표가 붙어있지 않죠 *)
     P2: Byte absolute 11000; (* 이건 열쇠를 만들고 바로 11000 이라는 번호표를 붙어주라는 얘기입니다. *)
     P3: PChar;
     C: Char;
   begin

     P := PChar(10000);  
    { 요건 실제 열쇠에다가 번호표를 붙여주는 겁니다. 이미 옷장이 있을때 입니다.
      이건 곧..포인터 변수 P가 이미 할당된 특정 메모리를 접근하기 위해서 포인터 변수에 주소를 지정하는 겁니다.
    }

     P3 := AllocMem(20000);
    { 요건 새로 20000 크기의 옷장을 하나 만들고 해당 옷장의 번호를 열쇠의 번호표에 기록하라는 겁니다.
      즉 20000 사이즈의 메모리를 할당하고 할당된 메모리 주소를 포인터 변수 P3 에 대입하라는 얘기입니다. }

     C := P^;  
    { 요기서 P^ 라고 포인터 변수뒤에 ^ 를 붙이는 것은 해당열쇠에 붙어있는 번호표(포인터변수에 들어있는 값)에
      해당 하는 옷장(메모리 번지)에 들어있는 물건(데이터)를 꺼내오라는 얘기겠지요? }

     P^ := 'A';       
    { 요건 포인터 변수에 들어있는 메모리번지에 'A' 라는 값을 집어넣으라는 얘기인데..
      열쇠에 붙은 번호표에 해당하는 옷장안에 내용물을 집어넣으로난 얘기겠죠? }

    FreeMem( P3 );
    { 요건 포인터 변수에 들어있는 주소의 메모리 공간을 해제하라는 얘기입니다.
      옷장 치워버리라는(폐기처분) 얘기죠 }
    
    C := P3^;
    { 요건 에러입니다. 위에서 옷장을 페기처분 했기때문에 해당 열쇠에 붙어 있는 번호표에 해당하는 옷장이
      없잖아요? 당연히 안될얘기죠... }

    P3 := nil;
    { 요건 포인터 변수가 더이상 특정 메모리를 가르키지 않도록 하라는 겂니다.
      즉 열쇠의 꼬리표를 떼어내버리라는 얘기죠.. 왜 이렇게 하냐하면 잘못된 열쇠 사용을 미연에 방지하기 위해서죠
      열쇠에 번호표가 없으니 위의 경우와 같이 실수할 일이 없잖아요?       
    }
      
   end;

  이중포인터같은 것도 있는데 이건 열쇠를 보관하는 열쇠보관함의 열쇠 정도로 생각하시면 되겠네요.

  쩝~ 예를든다는게 더 혼란스럽게 해드렸는지도 모르겠네요.
  
  그럼 이만....





이전: [팁] 포인터를 이해하기 위해선..
다음:
[팁] 델파이 6에서 폼의 TransparentColor 프로퍼티를 아십니까?
2001/09/08(00:38) from 61.77.217.81
델마당


글쎄요...
포인터를 쓰는게 이 뿐입니까.

API에서도 문자를 넘길때 PChar를 요구하는데, 이것이 곧 문자 포인터입니다.
다행히 창조는 자동으로 형 변환(타입캐스팅)을 하는듯 합니다.

그리고 듣기로는 구조체 역시 포인터를 이용한다면서요?

그런데...
포인터를 알아야만 프로그래밍을 할 수 있는것 역시 아니라는거죠.

단지 말씀드리고자 하는것은,

알아두면 좋다.


입니다.

지상현   2005-01-01 PM 1:22:27  
포인터 정말 편합니다. -_-;

제 경험인데요... 아시다시피 VB는 포인터란 개념을 직접적으로 지원하고 있지 않습니다.
그러다가 제가 어쩌다가 C를 접했는데... 포인터...요놈이 자꾸 길을 막아서 힘들었는데... 또 어쩌다가 이해를 했죠 -_-;

여하튼... VB를 쓰다보면 항상 느끼는 것이... "아! 이럴 때 포인터가 있다면 이런 허접하고 쓰레기스러운 루틴은 필요 없는건데!" 라는 생각이 자주 든다는 겁니다.

확실히 포인터는 편해요. (포인터 없는 VB로도 프로그램 잘 만드는 것처럼 몰라도 프로그램 만드는데는 지장이 없습니다. 좀 노가다를 해야겠지만)

흐흐...포인터, 알면 정말 편리하니 기회가 되시면 반드시 알아두시는게 좋습니다.
손상진   2005-06-23 AM 1:06:18  
아.. 이제야 포인터에 대해 이해가 가기 시작한다~^^
LIST ALL               GO TO THE TOP


N
   Subject
Posted by
Date
H
119
   창조에서 반올림하기 [1]
지상현 2013/01/05  5014
118
   컴퓨터에서 소수점을 표기하는 방식에 대해 [1]
지상현 2012/01/03  7527
117
   창조의 변수형에 대한 고찰 [1]
지상현 2012/01/03  5787
116
   창조 초보자들을 위한 아주 기본적인 사용법
김대명 2011/03/09  6226
115
   객체 배열을 정복해보자! [1]
지상현 2010/06/28  6997
114
   [0강] 그림판에 그림을 그려보자!
박종훈 2009/10/24  6633
113
     [1강] 그림과 관련된 객체
박종훈 2009/10/24  5764
112
       [2강] ㅎ그림판에 그림을 그리기 위해 준비단계
박종훈 2009/10/24  5976
111
   [수정!] 직선, 사각형, 타원, 원, 호, 현을 그려보자! [4]
박종훈 2009/05/10  6666
110
     [0강] ㅎ배경의 좌표 체계에 대해서 알아보자! [2]
박종훈 2009/10/24  7025
109
       [1강] 직선을 그려보자!
박종훈 2009/10/24  7728
108
         [2강] 사각형을 그려보자!
박종훈 2009/10/24  5626
107
           [3강] 타원을 그려보자! (원 포함)
박종훈 2009/10/24  8378
106
             [4강] 현, 호를 그려보자! [4]
박종훈 2009/10/24  6263
105
     호현계산기2 Rev2 [6]
박종훈 2009/10/23  5876
104
   기타 자료실에 있는 다람쥐어 (파악해 보자_) [2]
김제형 2009/05/03  5779
103
   맞짱! 포인터(Pointer) - 3부 [창조에서 포인터를 사용해보자!] ... 제작중
박종훈 2009/02/26  5940
102
   맞짱! 포인터(Pointer) - 2부 [C언어 포인터 존재를 확인하자!]
박종훈 2009/02/26  7298
101
   맞짱! 포인터(Pointer) - 1부 [C언어 들춰보자!] [7]
박종훈 2009/02/26  6275
100
   자연수들의 합 쉽게 구하는 방법(수학과 프로그래밍) [7]
박종훈 2009/02/15  6130
99
   창조입문 : 메모장 만들기 [2]
신용주 2008/12/20  7555
98
   창조와 ActiveX (2)
지상현 2007/08/11  10802
97
   창조와 ActiveX (1)
지상현 2007/08/07  8286
96
   골칫거리 ㅎ사용자함수 DLL하나로 해결하기! [7]
박종훈 2007/06/23  7115
95
   환경파일로 파워유저되어보자![개정판] [예제/사용!] 2 [6]
박종훈 2007/01/02  7773
LIST ALL   1 [2][3][4][5] Next
Copyright 1999-2024 Zeroboard / skin by reedyfox in miniwini style
로그인
지우개 Expert 3.0
제작자 : 천호성 님 [LINK]
로그인
대박로또2005
제작자 : 최재일 님 [LINK]
로그인
1박종훈15292 점
2지상현8809 점
3손상진7388 점
4권선중6060 점
5이진백5174 점
로그인
가입일닉네임
05/31김동률
03/31홍형기
09/01o00pp99oo
12/27이재민
11/20이희철
로그인