#include <stdio.h>
#include <malloc.h>
#define LISTSIZE 20
typedef struct {
int * elem;
int length;
int ListSize;
}SqList;
int main() {
SqList L1,L2,L3;
int i,j,a;
L1.elem = (int*)malloc(LISTSIZE * sizeof(int));
L1.ListSize = LISTSIZE;
printf("输入表L1的数据个数以及数据:\n");
scanf("%d",&L1.length);
for (i = 0; i < L1.length; i++) {
scanf("%d",&L1.elem[i]);
}
printf("L1的数据是:\n");
for (i = 0; i < L1.length; i++) {
printf("%d.",L1.elem[i]);
}
printf("\n\n");
L2.elem = (int*)malloc(LISTSIZE * sizeof(int));
L2.ListSize = LISTSIZE;
printf("输入表L2的数据个数以及数据:\n");
scanf("%d", &L1.length);
for (i = 0; i < L1.length; i++) {
scanf("%d", &L1.elem[i]);
}
printf("L2的数据是:\n");
for (i = 0; i < L1.length; i++) {
printf("%d.", L1.elem[i]);
}
//将两表中较短的表的长度记录
if (L1.length > L2.length) {
a = L1.length;
}
else a = L2.length;
printf("\n\n");
L3.elem = (int*)malloc(LISTSIZE * sizeof(int) );
L3.ListSize = LISTSIZE ;
L3.length = 10;
for (i = 0; i < a; i++) {
int n, m;
n = L1.elem[i];
for (j = 0; j < a;j++) {
m = L2.elem[j];
}
if (n = m) {
L3.elem[i] = n;
}
}
printf("表L3中的数据是:\n");
for (i = 0; i < L3.length; i++) {
printf("%d.",L3.elem[0]);
}
return 0;
}
如果把报错的代码及后边全部注释掉,就可以正常运行。
之前调用L2.length这一变量并不报错,为什么在这里就报错呢?