首页
社区
课程
招聘
[旧帖] [求助]《天书夜读》中关于结构体的一段代码 0.00雪花
发表于: 2009-5-9 13:10 1614

[旧帖] [求助]《天书夜读》中关于结构体的一段代码 0.00雪花

2009-5-9 13:10
1614
以下取自《天书夜读》(电子版)第11页
1-4.数组与结构
写一个简单的函数,用到结构体和数组。
typedef struct {
    int a;
    int b;
    int c;
      } mystruct;
int myfunction(int a,int b)
{
     unsigned char *buf[100];
     mystruct *strs = (mystruct *)buf;(这一句不懂,劳烦大家教教我)
     int i;
for(i=0;i<5;i++)
{
     strs[i].a = 0;
     strs[i].b = 1;
     strs[i].c = 2;
}
return 0;
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费
支持
分享
最新回复 (6)
雪    币: 108
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
指针类型转化
2009-5-10 19:44
0
雪    币: 54
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我知道数组也代表指针,但是不理解为什么一个数组能强制转换成一个结构体的指针类型
2009-5-11 13:13
0
雪    币: 458
活跃值: (426)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
4
unsigned char *buf[100];这句完全是迷惑人用的,
unsigned char * 是指针类型,大小是4字节,其实你完全可以用 int buf[100];来代替这一句
mystruct *strs = (mystruct *)buf;  这句是从buf(数组首地址)地址解释成一个mystruct型是数据类型

for(i=0;i<5;i++)
{
     strs[i].a = 0;
     strs[i].b = 1;
     strs[i].c = 2;
}
这循环仅仅用了 你申请的数组的前 5*3=15个元素(3代表你的结构体有3个int 类型数据),调试可以发现这一点
2009-5-17 02:53
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
就我个人的经验,所有指针都能强制转换,编译能通过,但运行时,如数据不兼容会出错。
2009-5-18 15:51
0
雪    币: 2292
活跃值: (538)
能力值: ( LV9,RANK:200 )
在线值:
发帖
回帖
粉丝
6
对于cpu来说 数组也好 结构也罢 都是浮云
这些都只是写给编译器看的
2009-5-18 15:55
0
雪    币: 54
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
谢谢楼上的朋友,我在调试器里面看到了,其实也是数组
2009-5-21 23:16
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册