读书人

运行后出现NULL pointer assigement 是

发布时间: 2012-02-11 09:51:35 作者: rapoo

运行后出现NULL pointer assigement 是怎么回事? 急~
这个程序编译通过 运行alt f5以后出现NULL pointer assigement 是怎么回事?谢谢
另:定义结构体的时候能否在里面定义一个算数式,比如int num=math+chinese+english这样的,我做了以后出错误,如果想实现这个功能怎么做呢
#include "stdio.h "
#include "bios.h "
#include "stdlib.h "
static struct s
{
char name[10];
int math;
int chinese;
int english;
int chemistry;
int physics;
int biology;
}list[3];

main() /*建立函数input*/
{
int i;
int key;
clrscr();
for(i=0;i <3;i++)
{
printf( "input the ESC to quit,or enter any other key\n ");
fflush(stdin);
key=bioskey(0)&0xff;
if((key&27)==27)
break;
else
{
printf( "please input the No.%d student information\n ",i+1);
scanf( "%s%d%d%d%d%d%d ",list[i].math,list[i],chinese,list[i].englist, list
[i].chemistry, list[i].physics, list[i].biology);
}
}
printf( "%s%d%d%d%d%d%d ",list[i].math,list[i].chinese,list[i].english, list
[i].chemistry, list[i].physics, list[i].biology);
}

[解决办法]
NULL pointer assigement
指针未分配空间就使用了,用于定位的指针不用初始化,
定义结构体的时候不能在里面定义一个算数式
[解决办法]
非法使用指针
[解决办法]
int num(int math,int chinese,int english)
{
return math+chinese+english;
}

如果在C++里面就可以用inline了
[解决办法]
1.
scanf( "%s%d%d%d%d%d%d ",list[i].math,list[i],chinese,list[i].englist, list
[i].chemistry, list[i].physics, list[i].biology);
==>
scanf( "%s%d%d%d%d%d%d ",list[i].name, //原句少这个
&list[i].math, //原句少&
&list[i],chinese,
&list[i].englist,
&list[i].chemistry,
&list[i].physics,
&list[i].biology);

2.
printf( "%s%d%d%d%d%d%d ",list[i].math,list[i].chinese,list[i].english, list
[i].chemistry, list[i].physics, list[i].biology);
=========>
printf( "%s%d%d%d%d%d%d ",list[i].name, //原句少了这个
list[i].math,
list[i].chinese,
list[i].english,
list[i].chemistry,
list[i].physics,
list[i].biology);

3.定义结构体的时候能否在里面定义一个算数式,比如int num=math+chinese+english这样的,我做了以后出错误,如果想实现这个功能怎么做呢
===========
不能.
加一个函数计算就是了


读书人网 >C++

热点推荐