私は C が初めてで、リンクされたリストに対してアクションを実行するコードを書いています。コードを追加する前に、いくつかの追加情報を次に示します。
typedef struct Ticket Ticket;
struct Ticket
{
TTransaction *INFO;
Ticket* next;
Ticket* prev;
};
そして私の問題のあるコード:
void HANDLER1(TTransaction* New_node)
{
Ticket * Database;
if(!DB_Manager_Initialize)
{
Ticket * Database =(Ticket*)malloc(sizeof(Ticket));
if(!Database)
{
OutputMgr_ReportTransaction(AXN_FAILURE,NULL);
IM_END_OF_INPUT1(Database);
exit(EXIT_FAILURE);
}
Database->next=NULL;
Database->prev=NULL;
Database->INFO=NULL;
DB_Manager_Initialize=1;
}
switch(New_node->Operation)
{
case(IM_CREATE):
IM_CREATE1(New_node,Database);
case(IM_UPDATE):
IM_UPDATE1(New_node,Database);
case(IM_RETRIEVE):
IM_RETRIEVE1(New_node,Database);
case(IM_DELETE):
IM_DELETE1(New_node,Database);
case(IM_END_OF_INPUT):
IM_END_OF_INPUT1(Database);
}
}
最初に、「データベース」を初期化し、それをmallocして、その値をNULLに設定します。スイッチ関数の前に、私が持っているものはまさに私が期待するものです: データベースはチケット型構造体へのポインターであり、next,prev,info は NULL へのポインターです。
Visual で変数ウォッチを使用すると、スイッチ関数に入るとデータベース自体が NULL ポインターになることに気付きましたが、その理由はわかりません。
New_node は、2 つの文字、2 つの int、および 1 つの ENUM (操作) を含む「TTransaction」タイプの構造体です。
ヘルプ :-(