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

C++빌더 Q&A
C++Builder Programming Q&A
[4956] Re:구조체에서 가변크기의 레코드를 담는 방법에 대하여...
제라툴 [] 3653 읽음    2001-01-18 21:33
안녕하세요 제라툴입니다.
오래간만에 글을 올리네영.^^
이제 설날이 얼마안남았내영.. 뭐두 새해 복많이 받으세용..

struct AAA
{
  int aaa;
  int bbb;
  double* ccc[];
  double* ddd[];
};
위의 구조체를 그대로 컴파일 하게 되면 분명에러가 발생할것입니다.^^
우선 구조체를 보면..
double* ccc[]; , double* ddd[]; 같은 동적할당을 요하는
부분이 있습니다.
하지만 이러한 선언이 성립하기 위해서는 변수선언시 이에 할당된 메모리를 잡도록
이에 할당되는 값들을 넣어주어야 한다.
그렇다면 어떻게해야 될까영.. 저두 솔직히 이런 경우는 첨이라 잘모르겠습니다.
에거거...
그냥 제가 아는 지식을 몇자 적어 봅니다.

우선 위의 것을.. 좀 에러가 나지 않도록 고치면..
struct AAA
{
  int aaa;
  int bbb;
  double** ccc;
  double** ddd;
};

이런식으로 2중포인터를 사용해서 고칠수 있습니다.
그런다음..
메모리할당이 필요한경우.
new 연산자를 통해.. 메모리를 할당해서..
사용하는 방법이 있을거 같습니다..
예를 들면..
struct AAA abc;
aaa.ccc = new double*[10];
for(int i = 0 ; i < 10 ; i++)
    aaa.ccc[i] = new double[10];

이런식으로 하면 [10][10]의 배열형태로 할당이 되겠죠..
그리고 메모리는 사용후 모두삭제 하시면 될거 같내영.

또 다른 방법을생각해보면..
Linked List를 사용하는 방법이 있을거 같습니다.
struct double_ccc
{
    double* ccc;
    struct double_ccc* next;
}
이런식의 구조체를 만드신후..
이구조체를 위의 구조체에 선언하여..(물론 이구조체 사용시에는 new를 사용하여 메모리 할당을해야 합니다.)
Linked List 형식으로 사용하는 방법두 있을거 같습니다..

뭐 직접해본건 아니지만 제가 아는 지식을 몇자 적어 봅니다..^^

조금이라도 도움이되셨다면 좋겠군여..

---- 아름다운 청년 제라툴 이었습니다. -------










+ -

관련 글 리스트
4946 구조체에서 가변크기의 레코드를 담는 방법에 대하여... 끔직이 3544 2001/01/17
4956     Re:구조체에서 가변크기의 레코드를 담는 방법에 대하여... 제라툴 3653 2001/01/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.