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

10-14 06:41