포인터 배열과 배열포인터를 합칠수 있나요??


void com() {
    struct TTT {
        char isDup[10];
        char readData[10];
        struct TTT* link[9];
    };
     struct TTT case1;
     char* data;

     data = read();
     for (int i = 0; i < 9; i++) {
         case1.readData[i] = data[i];
         case1.isDup[i] = data[i];
     }

         case1.readData[9] = '\0';
         case1.isDup[9] = '\0';
         for (int i = 0; i < 9; i++)
             for (int j = 0; j < 10; j++)
                 *case1.link[i]->readData[j] = case1.readData[j];*

         for (int i = 0; i < 9; i++)
             for (int j = 0; j < 9; j++)
             {
                 if (case1.isDup[j] == '0')
                 {
                     case1.isDup[j] = '2';
                     case1.link[i]->readData[j] = '2';
                    i++; j = 0;
                 }
             }

}

오류가 나는 부분인데요 *case1.link[i]->readData[j] = case1.readData[j];* 이부분에서 문자열의 문자를 읽는동안 오류가 발생했습니다. 라는 오류가 뜨네요 요는 배열을 가리키는 포인터들이 여러개 그러니깐 포인터들의 배열이 필요한데요. 각 포인터는 배열을 가리키고요. 그렇게 하려면 어떻게 수정을 해야할까요?? 부족한 질문 죄송합니다 ㅠㅠ

  • 2016년 07월 08일에 수정됨
    리눅스(유닉스) 기반의 시스템에서 웹 서비스를 개발하고 있습니다.
  • 2016년 07월 08일에 작성됨
    게임 프로그래밍에 관심이 많은 대학생입니다. c/c++언어로 게임 인공지능을 만드는것에 특히 흥미를 가지고 있습니다.

조회수 609


1 답변


제가 확실한 솔루션(해답)을 드릴수는 없을것 같으나...

저의 허접한 코딩실력으로 보아하니 조금 위험할수도 있는 코드가 될것 같습니다.

위에보면

struct TTT {
    char isDup[10];
    char readData[10];
    struct TTT* link[9];
};

라는 코드에서 보시면,

TTT라는 구조체를 만들고(선언?),

그위에 자신과 같은 TTT를 멤버 변수로 두고 있습니다.

이 구조는 굉장히 재귀적인 구조로,

이렇게 작성하면

TTT 라는 구조체의 멤버변수에 TTT(자신)과 같은 9칸짜리 배열이 있다는것은.

그 배열안에도 또, 또, 또 계속 이미지

마치 이따구가 되어 버립니다.

TTT라는 구조체에서

검은색이 isDup[10]readData[10];

빨간색이 구조체 TTT 에서 자기 자신인 TTT를 멤버 배열변수(?)로 가진 link입니다.

저도 현업에서 일하는 개발자가 아닌 학생으로서 생각해도..... 이런 구조를 가질일이 있나 궁금합니다. (있겠죠?)

Visual Studio 2017에서 c++ 디버거로 보다보면 link의 link (이중)이상 가다보면 메모리를 읽을수 없습니다 라는 말이 뜹니다.

요렇게여...이미지

아주 괴상한 구조를 가지게 됩니다.

제가뭐 현업에 종사하시는 분들처럼 현란하고 멋진 솔루션과 코드를 드릴수는 없지만.....

나름대로의 성심성의껏 답변을 적었습니다.

혹시 제가 적은 내용에서 잘못된 부분이나 이상한 점이 있으면 댓글 주세요.


  • 혹시 상단(질문)에 예시로 올려드린 코드가 무슨 역할을 하고, 어떤 목적으로 만드는지 알려드리면 비슷한 동작을 하는 코드를 한번 작성해 보겠습니다.    Proogrammer (Yu Guen Song)   2017.5.21 20:38     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close