user-0 提问: 程序运行出错，求大神帮助

回复:
user: user-1
content: 引用 楼主 csdn_mr_l 的回复: 文件及头函数并无语法错误，可还是运行出错 下面是程序#include<stdio.h> #include<stdlib.h> #include<time.h> #include"linear.h"  #define M 20 //A数组元素个数 #define N 20 //B数组元素个数 main()     {             sqlist listA,listB;             elemtype *pA,*pB;             pA=listA.elem;             pB=listB.elem;             Linear_initlist(listA);             Linear_initlist(listB);//创建线性表AB             srand((unsigned)time(NULL));             while(pA<=listA.elem+M-1)             {                     *pA=rand()%RAND_MAX;                     pA++;                     listA.length++;             }             while(pB<=listB.elem+M-1)             {                     *pB=rand()%RAND_MAX;                     pB++;                     listB.length++;             }             pA=listA.elem;             pB=listB.elem;             printf("A数组中的元素是：\n");             while(pA<=listA.elem+listA.length-1)             {                     printf("%d\t",*pA++);             }             printf("\n");             printf("B数组中的元素是：\n");             while(pB<=listB.elem+listB.length-1)             {                     printf("%d\t",*pB++);             }             printf("\n");//对AB表赋值并输出     } 下面是头函数/此头函数用于存放对线性表操作的函数 #ifndef LINEAR_H_INCLUDED #define LINEAR_H_INCLUDED #define LIST_INIT_SIZE 20//初始线性表总结点个数 #define LISTINCERMENT  10 //新增节点个数 typedef int elemtype; typedef struct //用于指向线性表地址，并保存线性表的长度与空间大小     {             elemtype *elem;    //用于存放线性表首地址             int length;        //用于存放线性表中的数据个数             int listsize;      //用于存放线性表的总单元个数     }sqlist;  void Linear_initlist(sqlist L);void Linear_initlist(sqlist L) //此函数用于创建空的线性表     {             L.elem=(elemtype*)malloc(LIST_INIT_SIZE*sizeof(elemtype));             if(!L.elem)                 exit(-1);             L.length=0;             L.listsize=LIST_INIT_SIZE;     }//Linear_initlist 运行后就出现“程序无响应”的问题了 修改后的参考代码(希望对你有帮助): #include<stdio.h> #include<stdlib.h> #include<time.h> #ifndef LINEAR_H_INCLUDED #define LINEAR_H_INCLUDED #define LIST_INIT_SIZE 20//初始线性表总结点个数 #define LISTINCERMENT  10 //新增节点个数 typedef int elemtype; typedef struct				//用于指向线性表地址，并保存线性表的长度与空间大小     {             elemtype elem[20];    //用于存放线性表首地址             int length;        //用于存放线性表中的数据个数             int listsize;      //用于存放线性表的总单元个数     }sqlist; #endif  #define M 20 //A数组元素个数 #define N 20 //B数组元素个数 main()     {             sqlist *listA,*listB;             elemtype *pA,*pB; 			listA=(sqlist *)malloc(sizeof(sqlist));             if(!listA)                 exit(-1);             listA->length=0;             listA->listsize=LIST_INIT_SIZE; 			listB=(sqlist *)malloc(sizeof(sqlist));             if(!listB)                 exit(-1);             listB->length=0;             listB->listsize=LIST_INIT_SIZE; 			pA=listA->elem;             pB=listB->elem; 			srand((unsigned)time(NULL));             while(pA<=listA->elem+M-1)             {                     *pA=rand()%RAND_MAX;                     pA++;                     listA->length++;             }             while(pB<=listB->elem+N-1)             {                     *pB=rand()%RAND_MAX;                     pB++;                     listB->length++;             }             pA=listA->elem;             pB=listB->elem;             printf("A数组中的元素是：\n");             while(pA<=listA->elem+listA->length-1)             {                     printf("%d\t",*pA++);             }             printf("\n");             printf("B数组中的元素是：\n");             while(pB<=listB->elem+listB->length-1)             {                     printf("%d\t",*pB++);             }             printf("\n");//对AB表赋值并输出     }

user: user-2
content: 因为你Linear_initlist函数是传值，函数对L初始化，对外是无效的，主函数的listA,listB都没有初始化，为空值，所以pA，pB也是0，取值时崩溃。

user: user-3
content: 楼主你可插下断点，自己调试下，看看程序在哪崩溃的，然后再分析下崩溃时，各变量的值情况，一般是指针越界，或者未初始化访问，或者为NULL还继续访问