【发布时间】:2012-07-01 10:42:17
【问题描述】:
我有以下函数可以从 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;
};
如果数据是struct employee* 类型,语句cur->data == data 将如何工作?
由于 data 是指向结构的第一个内存地址的指针,我只是比较指针地址吗?
【问题讨论】:
-
您不是在比较指针地址(例如
&data),而是在比较指针,即地址。
标签: c pointers struct comparison void-pointers