我在学习 C 的过程中遇到过以下代码。我已将其粘贴到 CodeBlocks 中,因此我知道输出,但是(这是我的问题)它是如何完成的?你能给我解释一下吗?
#include <stdio.h>
int main()
{
unsigned char t[10] = {0,1,2,3,4,5,6,7,8,9};
unsigned short *w;
w = (unsigned int*) &t;
printf("%d\n",*w++);
printf("%d\n",*w++);
printf("%d\n",*w++);
return 0;
}
最佳答案
请注意,此代码按原样包含错误:错误的转换、未定义的行为和平台相关的结果...
这是指针算术。 w
最初指向 t
第一个元素地址处的内容(这就是 w = (unsigned Short *)&t
的意思) 。然后,此后,您将访问包含连续 short
的内存。同时,指针从 short
移动到其后继。
关于c - 这段C代码是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34858608/