user-0 提问: 程序编译无错，调用函数后出现程序停止运行情况

回复:
user: user-1
content: int Add_Stu_Infomation int Init_Stu_Infomation 这两个函数实际上传递的都是形参，函数里所做的操作都是对形参所做的，而不会返回给实参。 请参考函数调用中的传值和传地址。 所以Stu_Infomation_S实际上使用时并没有分配空间。

user: user-2
content: 话说，这样的变量，在打字的时候，大小写来回切换，不累吗？  引用 4 楼 yangyangsnr 的回复:int Add_Stu_Infomation int Init_Stu_Infomation 这两个函数实际上传递的都是形参，函数里所做的操作都是对形参所做的，而不会返回给实参。 请参考函数调用中的传值和传地址。 所以Stu_Infomation_S实际上使用时并没有分配空间。

user: user-0
content: 引用 12 楼 sfd1234 的回复:语法正确，逻辑错误！仔细查找吧！可以单步就单步吧！  单步出来发现没进入调用的函数 但是还是找不到原因！

user: user-3
content: 语法正确，逻辑错误！仔细查找吧！可以单步就单步吧！

user: user-1
content: 引用 6 楼 u012148985 的回复:[quote=引用 4 楼 yangyangsnr 的回复:] int Add_Stu_Infomation int Init_Stu_Infomation 这两个函数实际上传递的都是形参，函数里所做的操作都是对形参所做的，而不会返回给实参。 请参考函数调用中的传值和传地址。 所以Stu_Infomation_S实际上使用时并没有分配空间。  有道理！我是不是要把实参作为返回值返回？[/quote] 可以，把那两个函数改成 Stu_Infomation *Add_Stu_Infomation Stu_Infomation *Init_Stu_Infomation 然后把参数返回就行了。 而且，你那个Add_Stu_Infomation里  Stu_Infomation_P->Stu_Name[Name_Maxsize]=Add_Stu_Name[Name_Maxsize]; 你这种赋值是错误的吧 对于C风格的字符串，可以使用 strcpy（Stu_Infomation_P->Stu_Name，Add_Stu_Name）; 来赋值。

user: user-4
content: 明显的是语法正确,逻辑或数据不正确造成的BUG后程序退出.解决这种问题的王道是 断点调试.

user: user-0
content: 操作完成后Stu_Infomation_S的值改变吗

user: user-0
content: 引用 7 楼 zhuyf87 的回复:[quote=引用 6 楼 u012148985 的回复:] [quote=引用 4 楼 yangyangsnr 的回复:] int Add_Stu_Infomation int Init_Stu_Infomation 这两个函数实际上传递的都是形参，函数里所做的操作都是对形参所做的，而不会返回给实参。 请参考函数调用中的传值和传地址。 所以Stu_Infomation_S实际上使用时并没有分配空间。  有道理！我是不是要把实参作为返回值返回？[/quote]  参数可以用**[/quote]  没太听懂，我的意思是我的实参和形参名是一样的。 比如我在main函数中定义了 Stu_Infomation *Stu_Infomation_S int Add_Stu_ID;   char Add_Stu_Name[Name_Maxsize];  被调用函数为 int Add_Stu_Infomation(Stu_Infomation *Stu_Infomation_S,int Add_Stu_ID,char Add_Stu_Name[Name_Maxsize]) {   Stu_Infomation *Stu_Infomation_P;   Stu_Infomation_P=(Stu_Infomation*)malloc(sizeof(Stu_Infomation));   Stu_Infomation_P->Stu_ID=Add_Stu_ID;   Stu_Infomation_P->Stu_Name[Name_Maxsize]=Add_Stu_Name[Name_Maxsize];   Stu_Infomation_P->next=NULL;   Stu_Infomation_S->next=Stu_Infomation_P;   Stu_Infomation_S=Stu_Infomation_P;   /*if (sizeof(Stu_Infomation_S))       return 1; //Add Success   else       return 0; //Add Fail*/ }

user: user-5
content: 引用 6 楼 u012148985 的回复:[quote=引用 4 楼 yangyangsnr 的回复:] int Add_Stu_Infomation int Init_Stu_Infomation 这两个函数实际上传递的都是形参，函数里所做的操作都是对形参所做的，而不会返回给实参。 请参考函数调用中的传值和传地址。 所以Stu_Infomation_S实际上使用时并没有分配空间。  有道理！我是不是要把实参作为返回值返回？[/quote]  参数可以用**

user: user-0
content: 引用 4 楼 yangyangsnr 的回复:int Add_Stu_Infomation int Init_Stu_Infomation 这两个函数实际上传递的都是形参，函数里所做的操作都是对形参所做的，而不会返回给实参。 请参考函数调用中的传值和传地址。 所以Stu_Infomation_S实际上使用时并没有分配空间。  有道理！我是不是要把实参作为返回值返回？

user: user-1
content: 引用 17 楼 u012148985 的回复:我仔细检查问题好像出在数组传参这里： 函数定义 Stu_Infomation * Add_Stu_Infomation(Stu_Infomation *Stu_Infomation_S,int Add_Stu_ID,char Add_Stu_Name[Name_Maxsize]) {   Stu_Infomation *Stu_Infomation_P;   Stu_Infomation_P=(Stu_Infomation*)malloc(sizeof(Stu_Infomation));   Stu_Infomation_P->Stu_ID=Add_Stu_ID;   Stu_Infomation_P->Stu_Name[Name_Maxsize]=Add_Stu_Name[Name_Maxsize];   Stu_Infomation_P->next=NULL;   return Stu_Infomation_P; 以下为调用语句： printf("Please Input StudentID\n"); 				  scanf("%d",&Add_Stu_ID); 				  printf("Please Input StudentName\n"); 				  scanf("%s",Add_Stu_Name); 				  Stu_Infomation_S->next=Add_Stu_Infomation(Stu_Infomation_S,Add_Stu_ID,Add_Stu_Name[Name_Maxsize]); 				  Stu_Infomation_S=Stu_Infomation_S->next; 				  if(Stu_Infomation_S->Stu_ID==Add_Stu_ID) 				  { 				    printf("Add Success!\n StudentID:%d  StudentName%s\n",Stu_Infomation_S->Stu_ID,Stu_Infomation_S->Stu_Name); 					ch=getch(); 				  } 				  else 				  { 				    printf("Add Fail!Press Any Key To Continue!\n"); 					ch=getch(); 				  }  不知道是不是这样传数组出现的问题  Stu_Infomation_P->Stu_Name[Name_Maxsize]=Add_Stu_Name[Name_Maxsize];  不能这样赋值吧。 用strcpy（）；

user: user-0
content: 我仔细检查问题好像出在数组传参这里： 函数定义 Stu_Infomation * Add_Stu_Infomation(Stu_Infomation *Stu_Infomation_S,int Add_Stu_ID,char Add_Stu_Name[Name_Maxsize]) {   Stu_Infomation *Stu_Infomation_P;   Stu_Infomation_P=(Stu_Infomation*)malloc(sizeof(Stu_Infomation));   Stu_Infomation_P->Stu_ID=Add_Stu_ID;   Stu_Infomation_P->Stu_Name[Name_Maxsize]=Add_Stu_Name[Name_Maxsize];   Stu_Infomation_P->next=NULL;   return Stu_Infomation_P; 以下为调用语句： printf("Please Input StudentID\n"); 				  scanf("%d",&Add_Stu_ID); 				  printf("Please Input StudentName\n"); 				  scanf("%s",Add_Stu_Name); 				  Stu_Infomation_S->next=Add_Stu_Infomation(Stu_Infomation_S,Add_Stu_ID,Add_Stu_Name[Name_Maxsize]); 				  Stu_Infomation_S=Stu_Infomation_S->next; 				  if(Stu_Infomation_S->Stu_ID==Add_Stu_ID) 				  { 				    printf("Add Success!\n StudentID:%d  StudentName%s\n",Stu_Infomation_S->Stu_ID,Stu_Infomation_S->Stu_Name); 					ch=getch(); 				  } 				  else 				  { 				    printf("Add Fail!Press Any Key To Continue!\n"); 					ch=getch(); 				  }  不知道是不是这样传数组出现的问题

user: user-0
content: 引用 14 楼 super_admi 的回复:话说，这样的变量，在打字的时候，大小写来回切换，不累吗？  [quote=引用 4 楼 yangyangsnr 的回复:] int Add_Stu_Infomation int Init_Stu_Infomation 这两个函数实际上传递的都是形参，函数里所做的操作都是对形参所做的，而不会返回给实参。 请参考函数调用中的传值和传地址。 所以Stu_Infomation_S实际上使用时并没有分配空间。[/quote]  只要一次定义好以后都是直接复制粘贴。。个人习惯

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

user: user-7
content: 难道说大神都喜欢用好复杂好复杂的变量名字、、、  - -

user: user-8
content: 看不懂。。。

user: user-0
content: 引用 1 楼 zxhuser-8 的回复:果然，没有模版就直接回复还是不行啊 ??找到问题吗

user: user-8
content: 果然，没有模版就直接回复还是不行啊