c - 这段C代码是如何工作的?

标签 c

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

相关文章:

c - 在进程树中查找子进程的级别

c - 执行需要 ext lib 的 C 脚本

c - 程序可以编译,但在提供输入时不执行任何操作

mysql - 使用 JOIN 语句时阅读器不起作用

c - C 中的字符串输入/输出

指针可以转换成void指针吗?

c - GDB在特定情况下如何处理段错误?

c - libpng.lib 中的链接器错误 "unresolved external symbol __imp___iob_func"

c - 如何确定环绕声音频信号的 channel 映射( channel 到轨道分配)

c - BIOS中断_int86