user-0 提问: “student *(student *,int)”与“int ()”的间接寻址级别不同	

回复:
user: user-1
content: 请问博主有没有遇到p1 是 nullptr的问题，该怎么解决。

user: user-0
content: 多谢大神指点，已经成功调试了。。。

user: user-2
content: 1.函数声明不要放在main函数里，放到你的13行的位置（struct student这个结构体后面） 2.你的函数struct student * create_lb(int n);只有函数声明啊？并没有看到你的函数实现

user: user-0
content: 麻烦各位大神帮忙看看。。。 真的调了好久还是错啊！  #include <stdlib.h> #include <stdio.h> #include <malloc.h> struct student { 	int num; 	char name[20];     int age; 	char sex[10]; 	int score; 	struct student *next; }; void print_lb(struct student *head) { 	struct student *p=head;  	printf("学生的信息表为：\n"); 	while(p!=NULL) 	{ 	    printf("%2d%2s%d%s%d",&p->num,p->name,&p->age,p->sex,&p->score); 	} } void count_lb(struct student *head) { 	struct student *p=head; 	int res[6]={0};  	while(p!=NULL) 	{ 	    if(p->score<60) 			res[0]++; 		else res[p->score/10-5]++; 		p=p->next; 	}  	printf("[0 ,59]的人数有:%d\n",res[0]); 	printf("[60,69]的人数有:%d\n",res[1]); 	printf("[70,79]的人数有:%d\n",res[2]); 	printf("[80,89]的人数有:%d\n",res[3]); 	printf("[90,99]的人数有:%d\n",res[4]); 	printf(" 100分 的人数有:%d\n",res[5]); } void edit_node(struct student *head,int num) { 	struct student *p=head;  	p=Cha(head,num);  	if(p==NULL) 		printf("无该生信息!\n"); 	else 	{ 	    printf("该生的原始信息为:学号:%d,名字:%s,年龄:%d,性别:%s,成绩:%d\n", 			p->num,p->name,p->age,p->sex,p->score); 		printf("请输入要修改该生的信息:\n"); 		scanf("%d%s%d%s%d",&p->num,p->name,&p->age,p->sex,&p->score); 		getchar(); 	} } void query_lb(struct student *head,int num)//查询 { 	struct student *p; 	 	p=Cha(head,num);  	if(p==NULL) 		printf("无该生信息!\n"); 	else printf("%d%s",p->num,p->name); } struct student *del_node(struct student *head,int num) { 	struct student *p1=head,*p2=head;  //p1待删点  	while(p1->next!=NULL&&p1->num!=num ) 	{ 		p2=p1; 	    p1=p1->next; 	}  	if(p1->num==num) 	{ 		if(head==p1)  			head=p1->next; 		else  			p2->next=p1->next; 		free(p1); 	} 	else printf("无删除结点！\n");  	return head; }  struct student *insert_node(struct student *head,struct student *stud) { 	struct student *p0,*p1,*p2; 	p1=head; 	p0=stud; 	if(p1==head) 	{ 	    head=p0; 		p0->next=NULL; 	} 	else 	{ 	    while((p0->num>p1->num) && (p1->next!=NULL)) 		{ 		    p2=p1; 			p1=p1->next; 		} 	    if(p0->num>p1->num) 		{ 		    p1=p0; 			p0->next=NULL; 		} 		else if(head==p1) 		{ 		    p0->next=head; 			head=p0; 		} 		else  		{ 		    p2->next=p0; 			p0->next=p1; 		} 	}  	return head; } struct student *create(int n) { 	struct student *head=NULL,*p1,*p2=NULL; 	int i;  	for(i=1;i<n;i++) 	{ 	    if((p1=(struct student *)malloc(sizeof(struct student)))==NULL) 	    { 	        printf("不能成功分配储存块!\n"); 	    	exit(0); 	    } 	 	    p1->next=NULL; 	    printf("请输入第%d个学生的信息(学号，名字，年龄，性别，成绩):\n"); 		scanf("%d%s%d%s%d",&p1->num,p1->name,&p1->age,p1->sex,&p1->score); 		if(i==1) head=p1; 		else p2->next=p1; 		p2=p1; 	}  	return head; } struct student *Cha(struct student *head,int num) { 	while(head!=NULL) 	{ 		if(head->num==num) 			break; 		else head=head->next; 	}  	return head; } void main() { 	int n,num,sel;               //sel菜单选项 	struct student * head=NULL,*p; 	struct student *Cha(struct student *head,int num); 	struct student * create_lb(int n); 	struct student * insert_node(struct student *head,struct student *stud); 	struct student * del_node(struct student *head,int num);     void query_lb(struct student *head,int num); 	void edit_node(struct student *head,int num); 	void count_lb(struct student *head); 	void print_lb(struct student *head);  	while(1) 	{ 	    system("cls"); 		printf("\n");printf("\n");printf("\n");printf("\n");printf("\n"); 		printf("                 ***************学生成绩信息系统***************\n"); 	    printf("                ╭────────张朝中出品─────────╮\n");printf("\n"); 		printf("                │                                            │\n"); 		printf("                │     1.输入学生信息       2.插入学生信息    │\n"); 		printf("                │     3.查询学生信息       4.修改学生信息    │\n"); 		printf("                │     5.删除学生信息       6.成绩统计分析    │\n"); 		printf("                │     7.输出学生信息       0.退出系统        │\n"); 		printf("                │                                            │\n"); 		printf("                ╰──────────────────────╯\n");printf("\n"); 		printf("                 **********************************************\n"); 	    printf("请输入(1-7,0退出):\n"); 	    scanf("%d",&sel); 	    switch(sel) 	    { 	         case 1: 				 printf("输入一批学生人数:\n"); 				 scanf("%d",&n); 				 head=create_lb(n); 				 break; 			 case 2: 				if((p=(struct student *)malloc(sizeof(struct student)))==NULL) 				{ 				    printf("不能成功分配储存块\n"); 					exit(0); 				 } 				 printf("请输入该生的信息: "); 				 scanf("%d%s",&p->num,p->name); 				 p->next=NULL; 				 getchar(); 				 head=insert_node(head,p); 				 break;              case 3: 				 printf("请输入待查的学生学号: "); 				 scanf("%d",&num); 				 getchar(); 				 query_lb(head,num); 				 break; 	         case 4: 				 printf("请输入要修改的学生学号: "); 				 scanf("%d",&num); 				 getchar(); 				 edit_node(head,num); 				 break; 	         case 5: 				 printf("请输入待删除的学生学号: "); 				 scanf("%d",&num); 				 getchar(); 				 del_node(head,num); 				 break; 	         case 6: 				 count_lb(head); 				 break; 	         case 7: 				 print_lb(head); 				 break; 	         case 0: 				 printf("您已经退出学生成绩信息系统"); 				 return; 	         default: 		          printf("输入错误,请重新输入选择: \n"); 		          break; 	    } 	    printf("\n请按任意键继续..."); 	    getchar();     } }

user: user-0
content: struct student { 	int num; 	char name[20]; 	int age; 	char sex[10]; 	int score; 	struct student *next; }; void main() { 	int n,num,sel;               //sel菜单选项 	struct student * head=NULL,*p;  	struct student * cha(struct student *head,int num);

user: user-2
content: 多贴一点代码，特别是struct student这个结构体

user: user-3
content: 关于自己是否适合编程的很简单的测试： 在报纸或杂志上随便找一段约1000字的文章，在Word中输入一遍。输完后再参考下面答案：  A里面有10处以上文字或标点错误 B里面没有文字或标点错误并敢为此跟人打赌 C里面没有文字或标点错误并且字体和排版完全与原稿一致 D打印在半透明的纸上和原稿重叠在一起检查一模一样，且自我感觉很有成就感  A不适合编程（理由：打字准确度偏低、粗心大意） B初级程序员（理由：打字准确度很高、认真细致、自信、理解全角半角概念） C高级程序员（理由：在B的基础上理解字体和排版也是电脑打印的重要因素、但相比D还不够偏执、精益求精、结果可验证） D软件项目经理（理由：能针对项目给出令人信服的细致到极点的需求说明和典型测试用例。用户几乎挑不出毛病。专业！）  如果想从A变成B的话，到我的资源http://download.csdn.net/detail/zhao4zhong1/4084259里面下载“适合程序员的键盘练习”

user: user-3
content: 偶遇到类似问题都是用 “每次用/*...*/注释掉不同部分再重新编译，直到定位到具体语法出错的位置。” 的方法解决的。