ing 发表于 2020-5-5 22:17

C 给游标赋值都能失败。。。

本帖最后由 ing 于 2020-5-6 21:12 编辑


当 i 为0的时候还是可以成功赋值的



i 自增后,在 i 处赋值就不友好了,游标全都没有改变




```
#define ElemType int
#define MaxSize 10

enum Status{
    OK = 1,
    ERROR = 0
};

typedef struct
{
    ElemType data;
    int cur;
}StaticLinkList;

enum Status initList(StaticLinkList *linkList)
{
    for (int i = 0; i < 9; ++i)
    {
      linkList->cur = i+2;
    }
    linkList->cur = 1;
    return OK;
}

int main()
{
    StaticLinkList linkList;
    initList(&linkList);
//    insertSLL(&linkList,2,1);
}
```
________________________________________________
修改 StaticLinkList *linkList
为    StaticLinkList linkList

tony666 发表于 2020-5-5 23:59

踏实的定义个结构体不好吗 ,按照你这样定义initList 的参数 是个 指向 xxxList 类型的指针 ,
linkList[ 0] 指向的是 xxxList
linkList 指向的是 xxxList[ 0 + MAX_SIZE ]
linkList 指向的是 xxxList[ 0 + 2 * MAX_SIZE ]
0下标以后的都越界了

typedef struct{
        int cur;
}TempArray;

int sss(TempArray p){
        for(int i = 0 ; i < 100 ; i++){
                p.cur = i;
        }
        return 0;
}
int main(){
        TempArray t;
        sss(t);
        return 0;
}

sam喵喵 发表于 2020-5-5 22:47

int main()
{
        StaticLinkList *linkList=NULL;
        linkList = (StaticLinkList*)malloc(sizeof(StaticLinkList)*MaxSize);
        initList(linkList);
       
        //    insertSLL(&linkList,2,1);
        return 0;
}

monvvv 发表于 2020-5-5 22:57

谁教你这么写的?你可以骂他
页: [1]
查看完整版本: C 给游标赋值都能失败。。。