数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 3482|回复: 9

[C51] 请教一段代码的涵义

[复制链接]
发表于 2020-10-19 04:45:47 | 显示全部楼层
        ((unsigned char *)&count1)[3] = CCAP0L;
        ((unsigned char *)&count1)[2] = CCAP0H;
        ((unsigned char *)&count1)[1] = cnt;
        ((unsigned char *)&count1)[0] = 0;
        
        只看等号前的部分,这里用到C语言的语法知识:
        1. &count1 --> 取count1的地址,也就是指向count1的指针;
        2. ((unsigned char *)&count1) --> 把这个指针强制转换成 (unsigned char *)类型的指针,使编译器知道指向目标的单位长度是“1个字节”;
        3. 指针与数组的写法都可以给某个地址的内存赋值,例如:
           char a[3];
           char *p = &a;
           则:
           p 等同于 &a[0], p + 1 等同于 &a[1], p + 2 等同于 &a[2], p + 3 等同于 &a[3].
           那么,*p 就是 a[0], *(p + 1) 就是 a[1], *(p + 2) 就是 a[2], *(p + 3) 就是 a[3].
           
        指针与数组都可以表示某个地址,明白了吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-8-26 07:08 , Processed in 0.062400 second(s), 8 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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