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)和一个值(即它所指的东西的地址).
请注意,其他类型的比较(即<>> =< =)会导致未定义的行为,除非指针指向同一个数组的元素或一个超过结尾的元素(不是这样做有意义除非你知道他们指的是“对象”,无论如何都存在于同一块连续的记忆中,但仍然存在.
总结以上是内存溢出为你收集整理的C void指针和指针比较全部内容,希望文章能够帮你解决C void指针和指针比较所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)