打印

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

[复制链接]
1990|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)不用强制转换么?

使用特权

评论回复
5
llljh| | 2011-8-25 13:18 | 只看该作者
很明显,结构指针就是指向结构体的指针;字符指针是指向字符地址的指针;
两者是不同的

使用特权

评论回复
6
llljh| | 2011-8-25 13:37 | 只看该作者
当然,所谓的不同也只是相对于C而言

使用特权

评论回复
7
renyaq| | 2011-8-25 13:55 | 只看该作者
在汇编中它们没什么区别

使用特权

评论回复
8
llljh| | 2011-8-25 14:05 | 只看该作者
struct FAT_Item              
{
unsigned char Item[4];
};
struct FAT_Item  Fat_list;

unsigned char *p;
p=& Fat_list;              /*  这应该要强制类型装换吧,难道你能编译通过?*/

使用特权

评论回复
9
llljh| | 2011-8-25 14:17 | 只看该作者
转换后 p[0] 是Fat_list结构中第一个字节的值,按照你这结构,也就是Fat_list.Item[0].

使用特权

评论回复
10
pengf|  楼主 | 2011-8-25 14:27 | 只看该作者
嗯,了解了,多谢大侠们

使用特权

评论回复
11
pengf|  楼主 | 2011-8-25 14:49 | 只看该作者
结贴了

使用特权

评论回复
12
seasideboy6| | 2011-8-25 15:11 | 只看该作者
强制类型转换下即可

使用特权

评论回复
13
pengf|  楼主 | 2011-8-25 16:14 | 只看该作者
强制类型转换下即可
seasideboy6 发表于 2011-8-25 15:11
您说的好简单啊

使用特权

评论回复
14
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;   //直接用指针指向结构中的数据并调用

呵呵,不要害怕指针,没有什么的,要知道它里面装的是地址就可以了!

使用特权

评论回复
15
chuxh| | 2011-8-28 17:09 | 只看该作者
“不要害怕指针,没有什么的,要知道它里面装的是地址就可以了”
这句话牛X

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

718

主题

10129

帖子

3

粉丝