Как получить доступ к объектам, заблокированным за двойным указателем? (С) - PullRequest
0 голосов
/ 06 ноября 2019

В домашнем задании я должен получить доступ к особенностям объекта (например, pID, код), которые находятся в структуре. Однако мне нужно сначала связать свою функцию с объектами (** ppObjects), но, поскольку я имею дело с двойным указателем, у меня, похоже, возникла проблема. Стоит отметить, что когда я пытался использовать те же команды, но функция была PrintNewObject (HeaderC * pStruct4), она работала нормально - поэтому я предполагаю, что мне приходится использовать doublepointer при работе с pStruct4.

Iпредоставили код, который я попробовал ниже. При компиляции он не показывает ошибок, но при попытке что-то напечатать из него, он говорит, что obj является нулевым указателем.

Функция, которую я хотел бы связать с ppObjects.

int InsertNewObject(HeaderC** pStruct4){
    HeaderC* testinH;
    for (testinH = *pStruct4; testinH != NULL; testinH = testinH->pNext)
    {
        int count = 0;
            while (count < 26) //one for every letter in the alphabet, as ppObjects is an array
            {
                Object9* obj;
                obj = (Object9*)testinH->ppObjects[count]; //the line that does not seem to properly define
                printf("%lu", obj->Code); //running this line crashes my program
                count++;
            }
    }

Заголовок, где мы видим, что ppObjects является двойным указателем.

typedef struct headc
{
    void **ppObjects; // Pointer to the array of pointers to objects. 
                      // Objects may be of types Object1-10 
    char cBegin;      // The first letter of ID of objects related to
                      // header is cBegin.
    struct headc *pNext;
} HeaderC;

Объект, который я предоставил в домашней задаче, находится ниже. Это то, к чему я получил бы доступ после определения

typedef struct ob9
{
    char *pID;
    unsigned long int Code;
    Date3 *pDate3; 
    struct ob9 *pNext;
} Object9;

Я получаю сообщение об ошибке, в котором говорится, что obj является нулевым указателем, когда я пытаюсь распечатать что-либо из obj.

Если это плохо сформулировано, ямне жаль. Я старался изо всех сил, чтобы сделать это понятным, но не слишком долго. Любая помощь приветствуется!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...