Q&A

  • 포인터관련
첫번째 질문

TUSLPacketData,TUSLRawData이 레코드로 선언되어잇고
각각의 레코드를 가리키는 포인터가

TUSLPacketData *PUSLPacketData;
TUSLRawData *PUSLRawData;선언되어 있습니다

그리고
pRD : PUSLRawData;
pUSLD : pUSLPacketData;
일때

pRD := PUSLRawData(@Buffer);
pUSLD := PUSLPacketData(@Buffer);

위에 코드가 뭘 의미하는건지..이 부분을 C언어로 바꾼다면 어떻게 해야 하는지..
알고 싶습니다.

두번째 질문
파스칼은 변수선언시 대소문자를 구별하지 않나요?
buff[]와 Buff[]는 같은 건가요?
3  COMMENTS
  • Profile
    최용일 2002.02.21 02:40
    안녕하세요. 최용일입니다.

    @는 주소를 가리키는 연산자입니다. C의 *와 같습니다. 델파이에서 포인터형을 선언할때는 ^를 씁니다. C에서는 모두 *를 쓰지만...

    그러니까 pRD는 Buffer의 주소를 가리키는 포인터가 되겠죠. 델파이에서는 C와는 달리 형변환이 엄격하니까 같은 포인터라도 PUSLRawData, PUSLPacketData, Pointer, ...등의 형을 서로 다르게 구별합니다. 그래서 "포인터타입(...)"이런 형식으로 형변환 한거구요...

    두번째는, 델파이에서는 대소문자 구별을 하지 않습니다.
    그러니까 두개가 똑같습니다.

    ^^ 항상 즐코하세요...

  • Profile
    채송희 2002.02.21 03:40
    답변 감사합니다.


    pRD := PUSLRawData(@Buffer);
    pUSLD := PUSLPacketData(@Buffer);
    이 문장에 대해서 자세한 해석좀 부탁드립니다.

    그럼 포인터인 pRD와 pUSLD는 같은 곳을 가리키고 있나요?




















  • Profile
    최용일 2002.02.21 04:51
    아까 설명 다 드렸는데... 쩝~

    pRD와 pUSLD는 같은 번지를 가리키고 있습니다.

    C로 바꾸면 아래와 같습니다... 쩝~ C한지가 오래되서 맞을려나... ^^

    pRD = *Buffer; // (&Buffer) 이건가.. 헐헐....
    pUSLD = *Buffer;

    ^^