【发布时间】:2016-04-21 00:26:19
【问题描述】:
#include <stdlib.h>
#include <stdio.h>
// self - referential structure
struct listNode {
char data; // each listNode contains a character
struct listNode *nextPtr; //pointer to next node
};
typedef struct listNode ListNode; // synonym for struct listNode
typedef ListNode *ListNodePtr; // synonym for struct listnode*
void insert(ListNodePtr *sPtr, char value)
{
ListNodePtr newPtr = malloc(sizeof(ListNode)); // create node
if (newPtr != NULL) // is space availale?
{
newPtr->data = value; // place value in node
newPtr->nextPtr = NULL; // node does not link to another node
ListNodePtr previousPtr = NULL;
ListNodePtr currentPtr = *sPtr;
// loop to find the correct location in the list
while (currentPtr != NULL && value > currentPtr->data)
{
previousPtr = currentPtr; // walk to...
currentPtr = currentPtr->nextPtr; // ... next node
}
if (previousPtr == NULL) // insert new node at beginning of list
{
newPtr->nextPtr = *sPtr;
*sPtr = newPtr;
}
else
{
previousPtr->nextPtr = newPtr;
newPtr->nextPtr = currentPtr;
}
}
else
{
printf("%c not inserted. No memory available. \n", value);
}
}
这是我的功能,问题发生在一行中 “ListNodePtr newPtr = malloc(sizeof(ListNode));” 它说 Cannoy 将 void 转换为 ListNotePtr 然后它说 IntelliSense:“void *”类型的值不能用于初始化“ListNodePtr”类型的实体
我有点困惑,因为我直接从我的演讲幻灯片中复制了这个功能,但我似乎无法让它工作。有人知道发生了什么吗?此函数和其他函数在 main(void) 中调用。 提前谢谢!
【问题讨论】:
-
你是不是偶然编译成C++?
-
我似乎在使用 C++ 编译器作为 C 编译器。更改选项(使用 C)或使用 cast。
-
我正在使用 Visual Studio 2013,但可能就是这样。我制作了一个 cpp 文件而不是 .c
-
它仍然抛出同样的错误:/
-
实际上,我在一个新项目中重复了这个实验(这样我可以确保我使用的是 C 而不是 C++)并且它成功了!谢谢!