Q&A

  • 파스칼에서 getmem 프로시져
임의의 과목수에 대하여 동적 할당.

Getmem(nSubject, nSubjectNum * sizeof(byte));

이렇게 할당했습니다. 그런데... 각각의 요소요소 마다 어떻게 접근하죠....

가령, 제가 n-1번째 자리에 99점을 넣고 싶습니다.

그럴때 어떻게 하죠..... 궁금합니다. 고수님들 제발 좀 알려주세요..............................
3  COMMENTS
  • Profile
    도끼로이마까 2005.04.12 03:39
    <!--CodeS-->
    uses SysUtils;
    ...
    var
      nSubject: PByteArray; // <<---
      nSubjectNum: integer;
    begin
      GetMem(nSubject, nSubjectNum * SizeOf(byte));
      nSubject[n - 1] := 99; // <<---
    end;
    <!--CodeE-->

  • Profile
    최용일 2005.04.12 02:04
    안녕하세요. 최용일입니다.

    <!--CodeS-->
    type
        PByteArray = ^TByteArray;
        TByteArray = array [0..65535] of Byte;
    var
        nSubject: PByteArray;
    begin
        GetMem(nSubject, nSubjectNum * SizeOf(Byte));

        nSubject^[0] := 99; // 1번째
        ......
        nSubject^[n-1] := 99; // n번재

        FreeMem(nSubject);
    end;

    <!--CodeE-->

    nSubject^[요소넘버]로 접근하세요...

    위에건... 0부터 시작하는 zero-based index입니다... 1부터 시작하도록하실려면 0..65535 =>1..65536으로 고치시면 됩니다.

    참고로 터보파스칼은 아마 64K를 넘는 배열을 할당할 수 없을겁니다. 하두 한지가 오래되서... 기억이...

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

  • Profile
    이중철 2005.04.11 21:43
    음..
    먼저 nSubject이 n개가 있나요?
    이것이 아닐경우
    nSubject 을 n개의 바이트로 할당한것이라면

    nSubject <- 이놈이 pchar로 정의되었다고 가정하면

    byte(nSubject[n-1]) := 99;
    또는
    nSubject[n-1] := char(99);
    이렇게 되겠죠