关于指针的一个C有关问题

关于指针的一个C问题
#include <stdio.h>

typedef   unsigned   char*   BYTE_POINTER;

void   ShowBytes(BYTE_POINTER   start,   int   len)
{
int   i;

for(i   =   0;   i   <   len;   i++)
printf( "%.2x ",   start[i]);

printf( "\n ");
}

void   ShowInt(int   x)
{
ShowBytes((BYTE_POINTER)&x,   sizeof(int));
}

void   ShowFlow(float   x)
{
ShowBytes((BYTE_POINTER)&x,   sizeof(float));
}

void   ShowPointer(void*   x)
{
ShowBytes((BYTE_POINTER)&x,   sizeof(void*));
}

int   main()
{
int   x   =   100;
float   y   =   100.0;
void*   p   =   &x;

printf( "Sizeof   int   is   %d\n ",   sizeof(int));
ShowInt(x);
printf( "-------------------------------------------------\n ");

printf( "Sizeof   float   is   %d\n ",   sizeof(float));
ShowInt(y);
printf( "-------------------------------------------------\n ");

printf( "Sizeof   pointer   is   %d\n ",   sizeof(void*));
ShowInt(p);
printf( "-------------------------------------------------\n ");
}

我知道ShowByte()函数的具体运作机制?
谢谢!

------解决方案--------------------
void ShowBytes(BYTE_POINTER start, int len)
{
int i;

for(i = 0; i < len; i++)
printf( "%.2x ", start[i]);

printf( "\n ");
}
按照你们所说的话,int x = 100; ShowBytes(&x, sizeof(x));就会报错了,但是可以运行的呀,讲的我还是头大了,麻烦再解释下

----------------------------------
首先我觉得你有必要去看看书,彻底弄明白指针,数组之类

在题目中,int是4字节的。而你的指针是byte型,单字节指针,它指向int型的首地址,对它来说,int型就相当于四个数据的byte数组(这只是打个比方),所以可以安全地使用。

所以这里使用是在特定情况下地,不是在哪里都可以用。
------解决方案--------------------
ShowBytes(BYTE_POINTER)&x,sizeof(x))的作用是从低到高
打印变量x的每个字节的内容(x可以是单一变量,不一定是数组)
start实际上是unsigned char *类型,start等于x的首地址,
start[i]访问的是第i字节,x为int型时sizeof(x)为4,结果
依次打印x的4个字节