В домашнем задании я должен получить доступ к особенностям объекта (например, 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.
Если это плохо сформулировано, ямне жаль. Я старался изо всех сил, чтобы сделать это понятным, но не слишком долго. Любая помощь приветствуется!