バイナリサーチツリーで作業しています。割り当てられたメモリーを失うことなく初期化に関する質問があります。初期化ポインターへのポインターへのポインターへのポインターへのポインターのポインタ
/* newStructure.h */
typedef struct Item {
int key;
struct Item* LPtr;
struct Item* RPtr;
} *tItem;
メインコード:
#include <stdio.h>
#include "newStructure.h"
int main() {
tItem* rootNode;
if ((rootNode = malloc(sizeof(struct Item))) == NULL)
// Problem with malloc
return 1;
else {
//Initialize node
*rootNode = NULL; /* And here points my question */
}
// Code continues..
}
私はmalloc()
を使用する場合、struct Item
のサイズのメモリブロックが割り当てられた、そのアドレスが*rootNode
に格納されていた、私は右ですか?
しかし、このノードをNULL
(ノードにはまだデータが入っていません)に初期化すると、*rootNode
にはNULL
が含まれているため、割り当てられたメモリブロックのアドレスが失われてしまいます。
ここに何か不足していますか?
直接関係のない、決してポインタ型を非表示にするのtypedefを使用しています。あなたのコードをもっと明瞭にするのではなく、混乱を招くだけです。 –
ここでポインタへのポインタが必要な理由は不明です。 typedefを使わずにコードを書き直すと、より明確になるはずです。 –