#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct string
{
int flag;//符号位
char *str;
int length;//字符串长度
}string;
typedef string Elemtype;
typedef struct node
{
Elemtype data;
struct node *next;
}node, *pnode;
void showElem( pnode list )
{
pnode p = list->next;
puts( "123" );
}
int main( void )
{
pnode list;
list = ( pnode ) malloc( sizeof(node) );
list->next = 0;
showElem(list); //正常访问
char buf[120];
char *str;
string s;
gets( buf );
str = ( char* )malloc( sizeof(buf) + 1);
s.flag = 1;
strcpy( buf, str );
s.length = sizeof( buf ) - 1;
showElem(list); // 访问空指针,出错
return 0;
}
showElem( ) 的作用只是想访问 list ->next
我明明在main函数中 给 list 分配空间,并且给 list ->next = 0 初始化
结果在showElem( ) 访问 list 却空指针报错
调试环境是VS2013
strcpy的原型是
从str拷贝到buf,意义不明,应该写反了?
还有两句
showElem(list)
之间没有对list进行操作请给出详细的报错,你的报错说的是不允许的系统调用。