vs2008调试出错, 结构体变量使用前未初始化.
巴扎黑
巴扎黑 2016-11-09 16:17:21
0
1
951

更新: 问题出在主函数的

ArrayListPtr list; // 结构体指针Init(list); // 传入结构体指针

这两行代码上. 如果换成

ArrayList list; // 结构体Init(&list); // 传入结构体地址

如果只是一个空指针的话, 什么也做不了.

全部代码如下: vs2008可以编译但是不能执行. 但是我直接用gcc编译的就能执行.

#include#includetypedef int ElementType;typedef int Status;#define OK 1#define ERROR 0#define MAX_SIZE 100#define INCREMENT 10typedef struct ArrayList {
ElementType *element; int length; int size;
}ArrayList, *ArrayListPtr;Status Init(ArrayListPtr list_ptr) { // allote space for list
list_ptr->element = (ElementType*)malloc(MAX_SIZE * sizeof(ElementType)); if(!list_ptr->element) { return ERROR;
}
// set length and size
list_ptr->length = 0;
list_ptr->size = MAX_SIZE;
return OK;
}int main() {
ArrayListPtr list;
Init(list); printf("length: %d\n", list->length); printf("size: %d\n", list->size); return 0;
}

错误提示信息.

542125261-58216b2bbc431_articlex.png

巴扎黑
巴扎黑

reply all (1)
phpcn_u29

指针使用之前一定要初始化

int main() { ArrayListPtr list; Init(list); /* //两种改法 ArrayList list; Init(&list) // 以下的操作都不是指针,访问成员要改为`.` //或者 ArrayListPtr list = (ArrayListPtr)malloc(sizeof(ArrayList)); Init(list); */ printf("length: %d\n", list->length); printf("size: %d\n", list->size); return 0; }


    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template
    About us Disclaimer Sitemap
    php.cn:Public welfare online PHP training,Help PHP learners grow quickly!