0

我有一个结构,该结构由一组指向不同类型的其他结构的指针组成。

    typedef struct{
        NodeT* nodes[2];
        int size; 
    }stackT; 

和:

    typedef struct{
        char info; 
    }NodeT;

我有一个指向上述(第一个)结构​​的指针:

    stackT* stackPtr;

假设为 stackT 结构以及两个 NodeT 结构分配了内存,并为两个 NodeT 结构的成员分配了相关的分配,我将如何将 stackT 中的指针之一传递给函数?


例如:

    void setChar(NodeT* nodePtr, char setTo){
        nodePtr->info = setTo;
    }

用线调用:

    setChar(stackPtr->nodes[0], 'A');

不工作。我认为这与 -> 语法取消引用指针有关,我实际上是在传递一个结构。我没有得到任何编译错误,但是当我通过打印存储在其中的任何内容来检查分配时,char info我什么也没有得到。

符号是不正确的还是我在程序的其他地方有问题?我只是想先排除这个(正确的传递语法)。

4

1 回答 1

0

If someone is looking for a solution to this problem, the above code was actually correct. Assuming you have an array of pointer in some structure and you wish to pass such a pointer, the correct syntax would be:

someFunc( structPtr->ptrArray[0] )

The line:

structPtr->ptrArray[0]

Actually returns a pointer, and not whatever the pointer is pointer to.

(*structPtr).ptrArray[0]

Is also equivalent.

That being said, I either mistakenly interpreted the information before me, or I had underlying errors elsewhere in the my code.

于 2013-09-18T19:12:52.277 回答