C void指针和指针比较

C void指针和指针比较,第1张

概述我有以下函数从C中的链表中删除通用数据: void removeData(void *data, struct accList *theList){ struct accListNode* cur = theList->head; struct accListNode* prev = NULL; for(; cur != NULL; prev = cur, cur = 我有以下函数从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如何工作?
由于数据是指向结构的第一个内存地址的指针,我只是比较指针地址?

@H_502_27@解决方法
cur->data == data

将指针cur->数据与指针数据进行比较.你要比较他们的价值,而不是他们的地址.指针是一个像任何其他变量一样的变量.它有一个地址(即& some_ptr)和一个值(即它所指的东西的地址).

请注意,其他类型的比较(即<>> =< =)会导致未定义的行为,除非指针指向同一个数组的元素或一个超过结尾的元素(不是这样做有意义除非你知道他们指的是“对象”,无论如何都存在于同一块连续的记忆中,但仍然存在.

总结

以上是内存溢出为你收集整理的C void指针和指针比较全部内容,希望文章能够帮你解决C void指针和指针比较所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1219667.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存