Cのリンクリストから汎用データを削除する次の関数があります。
void removeData(void *data, struct accList *theList)
{
struct accListNode* cur = theList->head;
struct accListNode* prev = NULL;
for(; cur != NULL; prev = cur, cur = cur->next)
{
if(cur->data == data)
{
if(cur == theList->head)
{
theList->head = cur->next;
}
if(cur == theList->tail)
{
theList->tail = prev;
}
if(prev != NULL)
{
prev->next = cur->next;
}
free(cur);
return;
}
}
}
背後にある意味は何cur->data == data
ですか?
私のデータはジェネリック(void*
)なので、これはプリミティブ型と構造型にとって何を意味しますか?
たとえば、従業員の構造を考えてみましょう。
struct employee
{
char name[20];
float wageRate;
};
cur->data == data
データがタイプの場合、ステートメントはどのように機能しstruct employee*
ますか?データは構造体の最初のメモリアドレスへのポインタなので、ポインタアドレスを比較するだけですか?