【小白】关于结构体与指针

【小白求助】关于结构体与指针
C/C++ code

#define MIXSIZE 1024
typedef int datatype;
//定义结构体
typedef struct

{
    datatype data[MIXSIZE];
    int last;

}  seqlist;


seqlist *p;//①
和seqlist s,*p=&s;//②
所得到的指针l有什么区别么?

当我用第一种方式得到p
然后给l->data[4](要不就是l->data[3])赋值时 总是无法操作 无法赋值

我用的的是CodeBlocks 编译器gcc;

不知道能不能看懂我说的;

还有哪位大神可以留下qq;
以后有问题指点一下;

在校大学生一枚;

------解决方案--------------------
指针申明后最好赋个初值,不然是很危险的!
------解决方案--------------------
seqlist *p;//①
和seqlist s,*p=&s;//②

1 定义了一个seqlist的指针变量,未做初始化。 p的作用就是可以指向一个seqlist的变量,但尚未指向

2 定义了一个seqlist变量s和seqlist指针变量*p, 然后取s的地址作为p的初始化值,这时候p不同于上一条的地方在于指向了一个真正的seqlist变量。

你之所以出错就是第一个p没有指向一个合适的seqlist变量,第二个p有指向。

看看这个:
int *pi;
int i, *pi=&i;

这个问题先把结构体放下分析一下,因为指针变量和变量跟是不是用在结构体上没有关系,你放到一块研究容易受到干扰。
------解决方案--------------------
探讨

谢谢各位 大概懂了

只是觉得奇怪!
用第一种方法得到的结构体指针 ,再给p->data[]赋值的时候其他的值都可以 唯独p->data[3]无法赋值
所以很奇怪这是为什么,

------解决方案--------------------
探讨

谢谢各位 大概懂了

只是觉得奇怪!
用第一种方法得到的结构体指针 ,再给p->data[]赋值的时候其他的值都可以 唯独p->data[3]无法赋值
所以很奇怪这是为什么,