首页 > 解决方案 > 如何访问锁定在双指针后面的对象?(C)

问题描述

在家庭作业中,我必须访问位于结构中的对象细节(即 pID、代码)。但是,我需要首先将我的函数与对象链接(**ppObjects),但由于我正在处理双指针,我似乎遇到了问题。值得注意的是,当我尝试相同的命令但函数是 PrintNewObject(HeaderC* pStruct4) 时,它运行良好 - 所以我猜这是我在处理 pStruct4 时必须使用双指针的问题。

我提供了我在下面尝试过的代码。在编译它时没有显示错误,但是在尝试从中打印一些东西时,它说 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++;
            }
    }

Header,在这里我们可以看到 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;

我在 hometask 中提供的对象如下。这是我在定义后可以访问的

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

当我尝试从 obj 打印任何内容时,我收到一条错误消息,指出 obj 是空指针。

如果这措辞不好,我很抱歉。我尽我最大的努力使这可以理解,但不会太长。任何帮助表示赞赏!

标签: cobjectpointersstruct

解决方案


推荐阅读