user-0 提问: c语言动态内存分配 请大神指点啊

回复:
user: user-1
content: 引用 14 楼 sadadi 的回复:[quote=引用 10 楼 a515360208 的回复:] [quote=引用 7 楼 sadadi 的回复:] NOED 是变量 Node 才是类型 呵呵，没看见typedef吗，NODE已经是一个类型了，Node是结构标记[/quote] 失误 [/quote] 用错表情了

user: user-1
content: 引用 10 楼 a515360208 的回复:[quote=引用 7 楼 sadadi 的回复:] NOED 是变量 Node 才是类型 呵呵，没看见typedef吗，NODE已经是一个类型了，Node是结构标记[/quote] 失误

user: user-2
content: #include<stdio.h> #include<malloc.h> #include<stdlib.h> typedef struct Node { int data;// 数据域 struct Node*pNext;//指针域 }NODE ,*PNODE; void main() { PNODE  create_list(); void traverse_list(PNODE phead); PNODE phead=NULL; phead =create_list();//create_list()功能：创建一个非循环单链表，并将该链表的头结点的地址付给phead traverse_list(phead );//遍历数组 getchar (); } PNODE  create_list() { int len; int i; int val;//用来临时放用户结点的值 PNODE phead=(PNODE )malloc (sizeof (NODE));//分配了一个头指针 if(phead =NULL) { printf("内存分配失败，程序终止：\n"); exit(-1);  } PNODE ptail=phead ; ptail ->pNext=NULL ; printf("请输入你要生成的链表结点个数：len="); scanf ("%d",&len ); for (i=0;i<len;i++) { printf("请输入第%d个结点的值：",i-1); scanf ("%d",&val); PNODE pnew=(PNODE )malloc (sizeof (NODE )); if( pnew=NULL )  ////这不是判断是赋值 { printf ("分配失败，程序终止！\n"); exit (-1); } pnew ->data =val; ptail ->pNext =pnew ; pnew ->pNext =NULL ; ptail =pnew ; } return phead ; }

user: user-2
content: #include<stdio.h> #include<malloc.h> #include<stdlib.h> typedef struct Node { int data;// 数据域 struct Node*pNext;//指针域 }NODE ,*PNODE; void main() { PNODE  create_list(); void traverse_list(PNODE phead); PNODE phead=NULL; phead =create_list();//create_list()功能：创建一个非循环单链表，并将该链表的头结点的地址付给phead traverse_list(phead );//遍历数组 getchar (); } PNODE  create_list() { int len; int i; int val;//用来临时放用户结点的值 PNODE phead=(PNODE )malloc (sizeof (NODE));//分配了一个头指针 if(phead =NULL)  ///这不是判断是赋值 { printf("内存分配失败，程序终止：\n"); exit(-1);  } PNODE ptail=phead ; ptail ->pNext=NULL ; printf("请输入你要生成的链表结点个数：len="); scanf ("%d",&len ); for (i=0;i<len;i++) { printf("请输入第%d个结点的值：",i-1); scanf ("%d",&val); PNODE pnew=(PNODE )malloc (sizeof (NODE )); if( pnew=NULL ) { printf ("分配失败，程序终止！\n"); exit (-1); } pnew ->data =val; ptail ->pNext =pnew ; pnew ->pNext =NULL ; ptail =pnew ; } return phead ; }

user: user-0
content: 谢谢各位啊，已经找到错误了

user: user-3
content: #include <stdio.h> #include<malloc.h>  typedef struct Node { 	int data;// 数据域 	struct Node*pNext;//指针域 }NODE ,*PNODE; int main() { 	PNODE phead=(PNODE )malloc (sizeof (NODE));//分配了一个头指针 	return 0; }

user: user-3
content: 没问题啊 程序没问题

user: user-4
content: int main() { PNODE phead=(PNODE )malloc (sizeof (NODE));//分配了一个头指针 return 0; } 你写在主函数里面了没？

user: user-5
content: 引用 7 楼 sadadi 的回复:NOED 是变量 Node 才是类型 呵呵，没看见typedef吗，NODE已经是一个类型了，Node是结构标记

user: user-6
content: 崩溃的时候在弹出的对话框按相应按钮进入调试，按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。

user: user-7
content: 去掉<malloc.h>试试

user: user-1
content: NOED 是变量 Node 才是类型

user: user-0
content: #include<stdio.h> #include<malloc.h> #include<stdlib.h> typedef struct Node { 	int data;// 数据域 	struct Node*pNext;//指针域 }NODE ,*PNODE; void main() { 	PNODE  create_list(); 	void traverse_list(PNODE phead); 	PNODE phead=NULL; 	phead =create_list();//create_list()功能：创建一个非循环单链表，并将该链表的头结点的地址付给phead 	traverse_list(phead );//遍历数组 	getchar (); } PNODE  create_list() { 	int len; 	int i; 	int val;//用来临时放用户结点的值 	PNODE phead=(PNODE )malloc (sizeof (NODE));//分配了一个头指针 	if(phead =NULL) 	{ 		printf("内存分配失败，程序终止：\n"); 		exit(-1);  	} 	PNODE ptail=phead ; 	ptail ->pNext=NULL ; 	printf("请输入你要生成的链表结点个数：len="); 	scanf ("%d",&len ); 	for (i=0;i<len;i++) 	{ 		printf("请输入第%d个结点的值：",i-1); 		scanf ("%d",&val); 		PNODE pnew=(PNODE )malloc (sizeof (NODE )); 		if( pnew=NULL ) 		{ 			printf ("分配失败，程序终止！\n"); 			exit (-1); 		} 		pnew ->data =val; 		ptail ->pNext =pnew ; 		pnew ->pNext =NULL ; 		ptail =pnew ; 	} 	return phead ; } 这是程序的代码，程序运行到“ptail ->pNext=NULL ”这里就终止了，显“0x01011473 处有未经处理的异常(在 ConsoleApplication1.exe 中): 0xC0000005: 写入位置 0x00000004 时发生访问冲突。”

user: user-0
content: 我是用vs2012写的程序代码

user: user-0
content: 在主函数里写了