|
发表于 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].
指针与数组都可以表示某个地址,明白了吗? |
|