0

異なる型の他の構造体へのポインターの配列で構成される構造体があります。

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

と:

    typedef struct{
        char info; 
    }NodeT;

そして、上記の(最初の)構造へのポインタがあります:

    stackT* stackPtr;

メモリが stackT 構造体と、両方の NodeT 構造体のメンバーに関連付けられた割り当てを持つ両方の NodeT 構造体に割り当てられていると仮定すると、stackT のポインターの 1 つを関数に渡すにはどうすればよいでしょうか?


例えば:

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

次の行で呼び出されます。

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

動作しません。私は、実際に構造体を渡しているポインターを逆参照する -> 構文と関係があると考えました。コンパイルエラーは発生しませんが、保存されているものを印刷して割り当てを確認すると、char info何も得られません。

表記が間違っていますか、それともプログラムの他の場所に問題がありますか? 最初にこれを除外したかっただけです(適切な構文を渡します)。

4

1 に答える 1

0

誰かがこの問題の解決策を探しているなら、上記のコードは実際には正しかった. ある構造体にポインターの配列があり、そのようなポインターを渡したい場合、正しい構文は次のようになります。

someFunc( structPtr->ptrArray[0] )

この線:

structPtr->ptrArray[0]

実際にはポインタを返しますが、ポインタがポインタを指すものではありません。

(*structPtr).ptrArray[0]

も同等です。

そうは言っても、前の情報を誤って解釈したか、コードの他の場所に根本的なエラーがありました。

于 2013-09-18T19:12:52.277 に答える