首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-04-20 
【小白求助】关于结构体与指针C/C++ code#define MIXSIZE 1024typedef int datatype//定义结构体typedef st

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

C/C++ code
#define MIXSIZE 1024typedef 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]无法赋值
所以很奇怪这是为什么,

热点排行
Bad Request.