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

C/C++ Q/A
[959] Re:Re:재질문
오전&오후 [kkhhyy11] 1571 읽음    2002-08-06 16:23
포인터변수라는게 4byte라는 애기는요..
음 예를 들어서 int *i, char *k;
이렇게 포인터변수를 선언했다고 하면요..
i나k는 둘다 4byte라는 애기입니다..
즉 포인터 변수는 데이타형에 상관없이 동일한 byte를 같는다는 애기지요..
이것도 테스트 해보시면 바로 확인하실수 있습니다..

char a[10]="abcdefghij";
char b[4]="opqr";
char *ptra, *ptrb;

a의 크기는 10byte고 b의 크기는 4byte입니다..
그리고 ptra, ptrb는 4byte입니다..
그리고 a[10]을 a[11]로 b[4]는 b[5]로 해주셔야 겠네요...
이유는 아시겠지요...^^;
(이거 컴파일러에서 Error날텐데...)

ptra=&a[0];
ptrb=&b[0];
그리고 포인터의 값에 배열의 시작주소를 주셨는데..
여기서 ptra나 ptrb에서는 증가포인터는 1byte가 됩니다.
즉 ptra + 1을 하시면 ptra의 포인터에서 1byte증가하게 되는겁니다.
결과에서도 보시면 아시겠지만 전부 1byte씩 증가했지요..?

그리고 출력을 이상하게 해주셨네요..

for(i=0;i<=15;i++) <- 여기서왜 15까지인가요..??
    printf("Address of ptr a : %p \t a[%d] : %c\n",(ptra+i),i,a[i]);
for(i=0;i<=10;i++) <- 그리고 이거는 왜 10까지 인가요..??
    printf("Address of ptr b : %p \t b[%d] : %c\n",(ptrb+i),i,b[i]);

포인터변수인 ptra나 ptrb는 a나 b와는 상관없는 다른곳에
잡혀있습니다..즉 ptra나 ptrb는 a와b의 시작주소를 가리키고 있는 포인터 변수입니다.
메모리의 어느공간에 잡혀있겠지요..그리고 자체주소값도 가지고 있고 그 주소에 들어있는
데이터값을 보시면 a나b의 시작번지값이 들어가 있지요..
그리고 출력하시는 배열 a,b의 주소는 포인터크기와는 상관없습니다..
지금 a와 b의 주소를 출력하시면서 왜 포인터크기를 매칭할려는건지
이해가 안되는군요...^^;

+ -

관련 글 리스트
957 Re:포인터 size는 4바이트 고정이죠? 남병철.레조 1900 2002/08/05
958     Re:재질문 오제호 1721 2002/08/06
959         Re:Re:재질문 오전&오후 1571 2002/08/06
960             Re:Re:Re:재질문 오제호 1698 2002/08/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.