|
안녕하세용 ^^;.
질문을 정학히 이해하지 못하고 답변드립니다. (질문이 쪼금 애매해서 ㅠ.ㅜ)
박용우님이 하시고자 하시는게...
char buffer[4096+1];
char *pbuffer = buffer;
이와 유사한.. 그러니까, pbuffer 에 buffer 의 주소값을 담아 놓듯이...
char형 포인터를 AnsiString 에 대입시키고 싶으신거죠?
일단 모든 변수나 함수는 메모리상에 번지수를 가지고 있어.. 어떤 넘이든 서로
번지수를 맞바꾸거나 할수 있죠.. 하지만 -_-;.. 서로 다른 데이터의 주소를 서로
맞바꾸려면 그에 따른 작업이 필요하게 됩니다.
일단 용우님이 적어주신 코드에서는 AnsiString 의 오퍼레이터인 operator = (const char *) 가 호출
된거네요.. ^^;..
즉 AnsiString 에서 뒤에 넘에 대해 어떻게 처리할지 아는 놈이라는 것이죠... 그래서 자기 메모리 공간에
할당해서 = 연산자 뒤에 있는 캐릭터 포인터의 값을 읽어 드려 자신이 관리하고 있는 메모리 영역으로
복사가 일어나게 되는 것이죠...
굳이 AnsiString 에 buf 의 주소를 넣고 싶으시다면 ㅡ.ㅡ;..
&tmp = (AnsiString *)buf;
이와 같이 써주시면 됩니다.
도움이 되셨나요?
: char* buf 와 size를 넘겨받아서...
: buf 에 buf 시작주소를 넣었어요
:
: 그리고 temp에 buf 주소값을 넣고 싶은데요...
: 어떻게 해야 하는지 잘 이해가 안가서요...
:
: 아래에 있는 다음문장이 temp 에 buf 주소값을 넣고 싶은 자리인데...
:
: temp = buf
:
: 지금은 잘몰라서 일단 주소를 넣었습니다.. 어떻게 고쳐야 될까요...?
:
: ================================================================
:
:
: AnsiString _fastcall TForm1::dump(char* buf, int size)
: {
: AnsiString temp, result;
: for(int i=0; i<size; i++)
: {
: sprintf(buf, "%d", &buf-i);
: temp = buf;
: result += "["+temp+"]";
: }
: return result;
:
: }
: =================================================================
|