更新: 问题出在主函数的
ArrayListPtr list; // 结构体指针 Init(list); // 传入结构体指针
这两行代码上. 如果换成
ArrayList list; // 结构体 Init(&list); // 传入结构体地址
如果只是一个空指针的话, 什么也做不了.
全部代码如下:
vs2008可以编译但是不能执行. 但是我直接用gcc编译的就能执行.
#include<stdio.h>
#include<malloc.h>
typedef int ElementType;
typedef int Status;
#define OK 1
#define ERROR 0
#define MAX_SIZE 100
#define INCREMENT 10
typedef 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;
}
错误提示信息.
指针使用之前一定要初始化