C void指针和指针比较
发布时间:2020-12-16 10:22:26 所属栏目:百科 来源:网络整理
导读:我有以下函数从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
我有以下函数从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如何工作? 解决方法cur->data == data 将指针cur->数据与指针数据进行比较.你要比较他们的价值,而不是他们的地址.指针是一个像任何其他变量一样的变量.它有一个地址(即& some_ptr)和一个值(即它所指的东西的地址). 请注意,其他类型的比较(即<>> =< =)会导致未定义的行为,除非指针指向同一个数组的元素或一个超过结尾的元素(不是这样做有意义除非你知道他们指的是“对象”,无论如何都存在于同一块连续的记忆中,但仍然存在. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |