開発環境はVS2013Desktopです
ポインタ変数自体のアドレスを関数に引数として渡し、関数内でメモリ領域を確保。
構造体変数headを基準にして順番に検索を行い、処理を行っていきます。
Errorで、引数に渡す変数searchとappendの初期化がされていません。と出ます。
アドレスを引数として渡し、そのアドレスからmalloc関数で指定した領域分メモリ領域を確保するのが目的です。
ポインタへの理解が深まっていない故、メモリイメージ図を展開して思慮致しましたが、未だ正答に辿り着けないままです。
ご法度を侵しているいる可能性もあります。ご教授願います。
#include<stdio.h>
#include<stdlib.h>
typedef struct _list_t{
int x;
int y;
_list_t *link;
}list_t;
list_t head = { 0, 0, NULL };
void LinkListStructure(list_t *append, list_t *search);
void Update();
void DeleteListStructure();
int main()
{
list_t *append; //リスト追加用
list_t *search; //リスト検索用
//append、searchポインタ変数のアドレスを渡す
LinkListStructure(&(*append), &(*search)); //←この行でエラー★-----------
//更新、削除
Update();
return;
}
void LinkListStructure(list_t *append, list_t *search)
{
//メモリ確保
if ((append = (list_t *)malloc(sizeof(list_t))) == NULL){
MessageBox(NULL, "追加リストメモリ確保失敗!!", "ErrorType:Memory", MB_OK);
exit(EXIT_FAILURE);
}
//linkにNULL格納
append->link = NULL;
//先頭アドレスのセット
search = &head;
//linkポインタがNULLのデータになるまで検索
while (search->link != NULL){
search = search->link;
}
//データを繋げる
search->link = append;
}
void Update()
{
list_t *search;
search = head.link;
while (search != NULL){
if (/*条件*/){
/*処理*/
}
search = search->link;
}
DeleteListStructure();
}
void DeleteListStructure()
{
list_t *search, *save;
search = save = head.link;
while (search != NULL){
if (/* 条件 */){
save->link = search->link;
free(search);
search = save;
}
save = search;
search = search->link;
}
}