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

C/C++ Q/A
[2092] Re:변수와 상수에 차이는 코드상 데이타영역를가리키는 주소없나 있나 여부??
임문환 [mhlim] 1396 읽음    2003-03-15 15:42

(unsigned short int *) 6 
위의 코드에서 6은 unsigned short int가 아닙니다. 
6은 메모리의 번지입니다. 

6 번지에서 시작해서 sizeof(unsigned short int) 만큼의 바이트에 있는 값이 unsigned short int로 다루어집니다. 


1. 상수와 변수의 차이
상수: 데이터 영역에 자리를 잡지 않음
변수: 데이터 영역에 일정한 크기(해당 형의 크기 만큼)의 자리를 잡음

2. 일반 변수와 포인터 변수에 대해.
일반 변수: 데이터 영역에 sizeof(형) 만큼의 자리를 잡음
포인터 변수:  데이터 영역에 sizeof(형*) 만큼의 자리를 잡음
(Win32에서 포인터 변수는 그 형이 무엇이든 32bit 크기를 갖습니다)
코드영역에서는 일반변수든 포인터 변수든 둘다 데이터 영역에서의 번지를 가지고 작업하게 됩니다.

int t,a,b; //데이터 영역에 int 형 크기의 영역 3개를 할당함
a=1; //데이터 영역의 a에 해당하는 번지에서 시작해서 int 크기의 영역에 1을 써넣음
a=2; //데이터 영역의 b에 해당하는 번지에서 시작해서 int 크기의 영역에 2를 써넣음
t=a+b; //a가 있는 번지에서 시작해서 int 크기의 영역에 있는 값과  
       //b가 있는 번지에서 시작해서 int 크기의 영역에 있는 값을 읽은 다음
       //두 값을 더하고
       //그 결과를 
       //t가 있는 번지에서 시작해서 int 크기의 영역에 써넣음
실행 파일에서, 위에서 언급한 t,a,b에 대해 작업하는 코드들은 모두 숫자(번지)로 되어 있으며 변수이름으로 되어 있지 않음.

t,a,b가 각각 데이터 영역에서 몇번지인지는 컴파일러와 링커가 관리합니다.
실행 파일에는 변수 이름과 데이터 영역을 짝지우는 정보가 없습니다.
실행 파일에서, 변수가 사용된 곳은 해당 변수의 데이터 영역에서의 번지로 대체되어 있게 됩니다.



이정우~ 님이 쓰신 글 :
: void main()
: {  unsigned short int *k = 1+2+3
:
: )
:
: 컴파일러가 위에 문장을 에러가 발생합니다.
:
: 즉 에러  메세지는 데이타형이 틀리다!나불나불~ 그럼 상수에 데이타형을
: 전환하여서 ~
:
: 그럼 unsigned short int *k= (unsigned short int *) 6 하면 잘 컴파일
: 됩니다.
:
:
: 그럼 이걸 컴파일하고 코드세크멘트에서 보면~
:
: unsigned short int *k 는~
: ~~~~~~~~~~~~~~~~~
:
:
: 최좌측에부호사용금지/2바이트할당/정수형/
:   최좌측에부호사용금지/2바이트할당/주소형/스택에 999번지
:
:   
: =
: ~
: 입력하라
:
: (unsigned short int * ) 6
: ~~~~~~~~~~~~~~~~~~
:
: 최최측에 부호사용금지/2바이트할당/정수형/
: 최촤측에부호사용금지/2바이트할당/주소형/ 6
:
: 그럼 이게 작동하면
:                               
: 코드영역에 6이   데이타영역 스택에 999번지에 입력!!
:   
:
:
: 위를 자세히보면  상수랑  변수는 둘다 코드영역에 존재하고 데이타형있다
:
: 그러나 틀린점은  포인터변수는  스택을 가리키는 번지가 존재하고~~!!!!!!!!!
:
: 상수는 스택을 가리키는 번지가존재하지 않고  자체 코드안에 그냥 값이
:
: 들어서 데이타형이 이걸 숫자로 해석하던지 문자로 해석하던지
:
: 주소로 해석하던지  그런것 아닌가요 ?
:   yes. no?
:
:
: ps ) c는 왜그렇게 언어가 압축되고 생락된 부분이 많은것같군요
: 마치 씨처럼~ 그러니 절라 난해하지 보기에 ...~~쩝!! 개인적생각입니다.
:

+ -

관련 글 리스트
2088 변수와 상수에 차이는 코드상 데이타영역를가리키는 주소없나 있나 여부?? 이정우~ 1186 2003/03/15
2092     Re:변수와 상수에 차이는 코드상 데이타영역를가리키는 주소없나 있나 여부?? 임문환 1396 2003/03/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.