结构指针 和 普通的数组指针

[复制链接]
3005|14
 楼主| pengf 发表于 2011-8-25 10:38 | 显示全部楼层 |阅读模式
就是结构指针和数组 字符的指针的区别
juventus9554 发表于 2011-8-25 10:55 | 显示全部楼层
楼主详细说说
 楼主| pengf 发表于 2011-8-25 11:13 | 显示全部楼层
struct FAT_Item              
{
unsigned char Item[4];
};
struct FAT_Item  Fat_list;

unsigned char *p;
p=& Fat_list;

是不是p[0]的值就相当于item[0]里面的值
 楼主| pengf 发表于 2011-8-25 13:10 | 显示全部楼层
结构的地址转赋给(unsigned char *p)不用强制转换么?
llljh 发表于 2011-8-25 13:18 | 显示全部楼层
很明显,结构指针就是指向结构体的指针;字符指针是指向字符地址的指针;
两者是不同的
llljh 发表于 2011-8-25 13:37 | 显示全部楼层
当然,所谓的不同也只是相对于C而言
renyaq 发表于 2011-8-25 13:55 | 显示全部楼层
在汇编中它们没什么区别
llljh 发表于 2011-8-25 14:05 | 显示全部楼层
struct FAT_Item              
{
unsigned char Item[4];
};
struct FAT_Item  Fat_list;

unsigned char *p;
p=& Fat_list;              /*  这应该要强制类型装换吧,难道你能编译通过?*/
llljh 发表于 2011-8-25 14:17 | 显示全部楼层
转换后 p[0] 是Fat_list结构中第一个字节的值,按照你这结构,也就是Fat_list.Item[0].
 楼主| pengf 发表于 2011-8-25 14:27 | 显示全部楼层
嗯,了解了,多谢大侠们
 楼主| pengf 发表于 2011-8-25 14:49 | 显示全部楼层
结贴了
seasideboy6 发表于 2011-8-25 15:11 | 显示全部楼层
强制类型转换下即可
 楼主| pengf 发表于 2011-8-25 16:14 | 显示全部楼层
强制类型转换下即可
seasideboy6 发表于 2011-8-25 15:11
您说的好简单啊
areshan 发表于 2011-8-26 10:55 | 显示全部楼层
结构指针指向的是结构的开始地址,然后从开始地址处去寻找结构里面的数据,这个和结构名称是一样的用法。
而数据,字符等指针,指向的是直接的数据,可以直接指向结构里的数据,而不用先找到结构名(结构的首地址)。

举个例子:
struct student
{
   unsigned char  age;   //年龄
   unsigned  int    number; //学号
   unsigned char name[10]; //名字
}; //学生结构

student std1={20,11111,"xiaoming"};//学生1的数据
student *pstd=std1; //指针指向std1
unsigned char *ag=std1.age;
unsigned char hhh;
//如果要调用学生的年龄可以有3种方法
hhh=std1.age;   //用结构名调用结构数据
hhh=ag->age;  //用指向结构的指针调用结构中的数据
hhh=*ag;   //直接用指针指向结构中的数据并调用

呵呵,不要害怕指针,没有什么的,要知道它里面装的是地址就可以了!
chuxh 发表于 2011-8-28 17:09 | 显示全部楼层
“不要害怕指针,没有什么的,要知道它里面装的是地址就可以了”
这句话牛X
您需要登录后才可以回帖 登录 | 注册

本版积分规则

718

主题

10129

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部