C语言中结构体类型定义和赋值操作,运行后报错,代码如下,谢谢高手给予解答,谢谢。

#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 10
typedef struct
{
int r[MAXSIZE+1];
int length;
}SqList;

int main()
{
int i;
SqList *L;
L->length=100; // 程序一运行到这一步就报错,不知道为什么。。。
}

你没有让指针变量L指向某个地址,他是个野指针,可能指向某个不可读取或存储的内存空间,你再 L->length=100; 改变这个内存空间中存的值,他当然是错的。
main函数改一下:
int main()
{
int i;
SqList lList={0};
SqList *L=&lList;//让L指向 lList所处的内存空间。
L->length=100;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-21
你只声明了,没有去new SqList,怎么能去用?
int i;
SqList *L;
L = new SqList;
L->length=100;
第2个回答  2013-03-21
必须错,L是一个指针,你没有让它指向哪个地方就给他赋值,怎么能行呢?乜可以这样:
SqList *L = new SqList();给L所指的地方分配一个空间就行了
第3个回答  2013-03-21
SqList *L = (SqList *)malloc(sizeof(Sqlist)); // 需要申请空间的。
第4个回答  2013-03-21
你这样编写没有错误,我在c-free上试过,打印出来是100
第5个回答  2013-03-21
L->length换成 L.length试试
相似回答