LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1702|回复: 10

请教结构体指针和结构体数组的一个问题!谢谢!

[复制链接]
发表于 2007-2-26 18:19:04 | 显示全部楼层 |阅读模式
一个结构体有这么一个声明:struct  power_ll    *InfoTable;


使用的时候却是结构体数组的形式,

InfoTable[Index].Flag    = 0

请问这个怎么解释?谢谢!

结构体power_ll含有Flag成员!
发表于 2007-2-26 19:49:46 | 显示全部楼层
如果有较完整的源代码会让我们好理解点吧?
回复 支持 反对

使用道具 举报

发表于 2007-2-26 20:26:44 | 显示全部楼层
InfoTable[index] 相当于 *(InfoTable + index),已经解引用了,所以可以用点来访问结构体成员。
回复 支持 反对

使用道具 举报

发表于 2007-2-26 23:08:43 | 显示全部楼层
C里面数组和指针本来就是一回事。
回复 支持 反对

使用道具 举报

发表于 2007-2-27 00:21:24 | 显示全部楼层
楼上的说得对.
回复 支持 反对

使用道具 举报

发表于 2007-2-27 09:28:12 | 显示全部楼层
Post by gamedragon
C里面数组和指针本来就是一回事。

数组和指针不能说完全一样,因为指针是可以变化的,代表数组的那个符号只是一个带有类型特征的地址,只是一个值而已。
回复 支持 反对

使用道具 举报

发表于 2007-2-27 09:32:38 | 显示全部楼层
LS说的是常量和变量的区别,当然如果一定要把写成int a[]这种形式的才能叫做数组的话也没错。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-2-27 09:56:37 | 显示全部楼层
多谢楼上各位的指点!
 
请问cyfdecyf老兄,若index = 1,InfoTable[index] 就相当于 *(InfoTable + 1),而原先结构体使用的并不是结构体数组,请问下*(InfoTable + 1)的值是什么呢?

这样做会不会在程序里面形成一个bug?
Thanks a lot!
回复 支持 反对

使用道具 举报

发表于 2007-2-27 23:39:55 | 显示全部楼层
Post by hhshr825
而原先结构体使用的并不是结构体数组,请问下*(InfoTable + 1)的值是什么呢?


值是随机数,会溢出!
回复 支持 反对

使用道具 举报

发表于 2007-2-28 14:23:48 | 显示全部楼层
数组就是常指针。。。
这应该是个 结构数组的指针。。。  c++的东西吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表