先贴代码
typedef unsigned int lword;
问题:
1)为什么要先强转为指针再取值?
2)这是怎么算出来的?
ps:这个是嵌入式环境的一段代码,我自己写了个demo,这种写法第一次见不是很懂
1)为什么要先强转为指针再取值?
直接用字符数组赋值给int整型是不行的, 但C语言可以将其强制转换为int指针,解引用后也就可以赋值了
2)这是怎么算出来的?
int类是32bit数据, srdt是四个人字符,(其实是5个, 但不重要), 每个字符占8位, 正好也是32位.
至于怎么算出来的, 就要看你的机器的大小端, 可能是SRDT也可能是TDRS.
16进制比较容易看每两个数字代表一个字符
0x53 52 44 54
0x54 44 52 53
“SRDT"是字符串常量存放在代码的data区
然后强制转换为lword指针,最后解引用,a的值是SRDT ascii码转int
int arr[3] = {1,2,3};
int*p = arr;
for(;p!=arr+3;p++){
printf("%d\n",*p);
}
return 0;
}