我在学习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/