c - 我的 C 代码中出现未知的 "delete"错误

标签 c pointers memory-management linked-list free

<分区>

对于这段代码,我必须从老师给我们的函数原型(prototype)中填充函数。对于此特定功能,我不断收到以下错误。

"error: expected ';' before 'p'" delete p;

int delete(struct node *start, int data){
     struct node *q, *p;
     int dataAfter;
     p = find(start, dataAfter);
     if (p != NULL){
         q = start;
         while (q->next != p){
             q = q->next;
         }
         q->next;     

         p->next;   

         delete p;    

         return 1;                 
     }
     return 0; 
}

最佳答案

错误本身是一个语法错误 - C 中没有太多看起来像“删除 p”的代码。由于'delete'不是C中的预定义函数(与'return'不同。return 1工作得很好,虽然它看起来有点像'delete p'),人们认为'delete'之后需要一个分号.

但是,即使您确实包含了分号,由于前面的评论给出的原因,它仍然不起作用。

将“delete”替换为“free()”以消除编译时错误,但您仍然需要更改

q->next;
p->next;

q->next = p->next;

即使删除后链表也能正确连接。

链表一开始可能真的很困惑,所以建议您始终在计算机旁边的一张纸上画出您要实现的内容。

祝你好运:)

关于c - 我的 C 代码中出现未知的 "delete"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48918497/

相关文章:

c++ - 使用位域输出结构大小

c - 为什么 while 循环不能正常工作?

c - c中的指针表达式有什么问题?

C 将 Char 数组拆分为数组数组

c++ - delete p 在析构函数中执行

c++ - STL+内存管理问题

c - 动态地从文件或标准输入中读取一行

c - 除非我使用 if 语句终止,否则为什么我的左移函数会出现段错误?

c - 如果(理论上)我应该被允许,为什么我不能打开文件进行阅读?

C 中动态数组与 & * 和 [] () 混淆