在这里插入代码片
详细的调试,和反编译过程如图片所示,最后发现原因简单描述如下:,
for(i = 0; i < MAXIZE-1;++i){space[i].cur = i+1;}MAXIZE-1为99
经过一些列操作,
最后i+1的值传递给了寄存器rax所存的地址所指的位置第一次循环,rax存的地址就是space[0].cur的地址
第二次循环,rax存的地址不是space[1].cur的地址,所以space[1].cur没有得到正确的值,
再往后的每一循环,也就都不对了。请问为什么。该怎么解决。
源码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TURE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define MAXSIZE 100
typedef struct
{
char *data;
int cur; //指示器cur代表指针,指示的节点在数组中的相对位置
} Node,SLinkList[MAXSIZE];
void Initspace_SL(SLinkList &space)
{
int i;
for (i = 0; i < MAXSIZE-1;++i)
{
space[i].cur = i+1;
}
space[MAXSIZE-1].cur = 0;
}//初始化
void Creatspace_SL(SLinkList &space)
{
int i,j;
printf("输入静态链表大小:");
scanf(&