这是什么问题?它打印第一个printf,但不打印下一个语句 帮助赞赏。
代码:
#include<stdio.h>
#include<stdlib.h>
struct node
{
int Data;
struct node *Link;
};
//close struct
void insertAtEnd(struct node *Itcstd, int iData)
{
while (Itcstd->Link != NULL )
Itcstd = Itcstd->Link;
Itcstd->Link = (struct node*) malloc(sizeof(struct node));
Itcstd->Link->Link = NULL;
Itcstd->Link->Data = iData;
} //close insertAtEnd
int main()
{
struct node *EHead;
EHead = (struct node*) malloc(sizeof(struct node));
EHead->Link = NULL;
EHead->Data = 4;
printf("EHead link: %p Ehead Data: %d\n", EHead->Link, EHead->Data);
insertAtEnd(EHead, 10);
printf("EHead link: %p Ehead Data: %d\n", EHead->Link, EHead->Data);
return 0;
} //close main
答案 0 :(得分:2)
实际上这是一个很好的代码,它对我很有用。 (我可以看到两行。)
答案 1 :(得分:1)
代码运行正常,没有任何内存问题。
唯一需要提及的是printf()
指针(%p
)的转换说明符仅为void *
定义。告诉编译器迂腐(gcc选项-pedantic
)它会通知你这个。
所以这个
printf("EHead link: %p Ehead Data: %d\n", EHead->Link, EHead->Data);
应为此
printf("EHead link: %p Ehead Data: %d\n", (void *) EHead->Link, EHead->Data);
这是顺便说一句,是C中罕见的情况之一,无法避免施法。
答案 2 :(得分:1)
代码很优雅,对我来说工作正常我在windows上检查过(codeblocks MinGW gcc 4.7,turbo c ++) linux(gcc 4.8.1),它完美无缺。 你在哪个环境使用?