这个C代码意味着什么? - 计算机系统程序员的观点

时间:2016-08-26 07:22:52

标签: c

我想知道下面的函数show_int()实际上是......

此代码位于Computer Systems A Programmer's Perspective的第28页。

#include <stdio.h>

typedef unsigned char *byte_pointer;

void show_bytes(byte_pointer start, int len) {
    int i;
    for (i = 0; i < len; i++) {
        printf("%.2x", start[i]);
    }
    printf("\n");
}

void show_int(int x) {
    show_bytes((byte_pointer) &x, sizeof(int));
}

void main() {
    show_int(20);
    getchar();
}

1 个答案:

答案 0 :(得分:0)

最重要的是要了解*byte_pointer(a.k.a。unsigned char):

(byte_pointer) &x

您可能会将其视为将指针int(在您的情况下:20)转换为一系列字节(可以是4或8或甚至更多字节,具体取决于体系结构)。

show_bytes()函数正在做的只是迭代一个字节数组以显示其后续字节,将其格式化为hexadecimal format