>> Delete Reply from No. 11615 article
No. RE: 포인터의 값을 이용한 에러 테스트.

등록 2000-11-16 02:47:00 By localhost     조회 2
이름 원스몬(152번째 포켓몬)    

어렵지만 쉽게 설명드리겠읍니다.
 밑에 내용은
어셈블러와 씨를 밥먹듯이 넘나드는 사람은 안 햇갈리지만,
굉장히 알쏭달쏭하고, 긴가민가 한 내용임으로 잘 이해하셔야
합니다.
 cpu에 레지스터라는게 있는것은 누구나 아실것입니다.
요즘은 대부분 32bit 입니다.
 쉬운 이해요령..
 1. 리눅스에서 int형의 size는?    32bit
2. 리눅스의 int pointer의 size는? 32bit
3. 리눅스에서 char형의 size는?    8bit
4. 리눅스의 char pointer의 size는? 32bit
5. 위에서 공통점은? 1,2,4번이 똑같이 32bit다.
 그러므로, int형과 pointer형의 size가 같음으로 포인터는 int처럼
연산, 비교등이 가능합니다.
(어렵게 설명하면, cpu의 레지스터는 정수와, 포인터를 가리지 않습니다.
 그냥, 연산하거나, 비교할뿐.. 하지만, 실제명령어는 코드가 다릅니다.)
 실제로 밑의 예에서 fp는 어셈블러 상으로 정수처리됩니다.
   *** 글로 설명할려니 글발이 잘 안받아서 죄송합니다......
      저는 화이트보드 체질이레서... 자세히 설명하려면
      씨피유 구조랑, risc 와 cisc의 차이, cpu의 메모리 지정방식과
      명령어의 상관관계 등을 몽땅 설명해야되서....
 오늘의 결론 :  평범한 인텔의 32비트 씨피유의 포인터값은 어셈블러상으로는
               정수로 인식한다.
  : Linux Programming에 관한 책에서 에러처리에 대한 학습중에
: 제목대로.
: 포인터의 값을 이용한 에러 테스트에 대한 내용중에 궁금한 게 있어서 말입니다.
:
: 예제의 내용은.
:
: 1:   FILE *fp = fopen("myfile.dat", "r");
: 2:
: 3:   (fp == 0)  {  /* NULL Returned? */
: 4:     /* Open Failed: */
: 5:   }
:
: 입니다. 여기서 3행을 보면 fp라는 파일포인터를 정수값인 0과 비교하는 장면이
: 나오는데 포인터에는 메모리 번지값이 들어 있는게 이 값이 어떻게 정수인 0과
: 비교될수 있는지 궁금합니다.
: 코멘트 대로라면 포인터값이  0 이면은 null pointer라는 말 뜻이 되는것 같은데
: 진짜로 그런지 말입니다.
:
: 포인터에 대해 아시는 분 도움 좀 부탁드립니다.
:
: P.S>
: 여기는 경남 거제입니다. 시골이지만 여기서도 집에 리눅스깔아놓고 빡빡기는 사람이
: 있습니다. 감기 조심합시다. 여기도 추우니 북쪽은 오죽 춥겠습니까?
:
: --
: 홈페이지 www.chungnyul.com  --
이 곳에 서명을 적어주십시오.
   
      from 원스몬(152번째 포켓몬)
[관리자] 패스워드를 입력 하십시오. 답장이 존재하면 함께 삭제됩니다.[ 목록 | 이전 ]
패스워드:    

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved