(CSAPP第三版系列)导航篇传送门
2.56 用不同的示例值运行show_bytes的代码。
#include <stdio.h>
typedef unsigned char *byte_pointer;
void show_bytes(byte_pointer start, size_t len)
{
size_t 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 show_float(float x)
{
show_bytes((byte_pointer)&x,sizeof(float));
}
void show_pointer(void *x)
{
show_bytes((byte_pointer)&x,sizeof(void *));
}
int main()
{
int x = 15213;
float y = 152.13;
void *z = (void *)&x;
show_int(x);
show_float(y);
show_pointer(z);
return 0;
}
/*测试结果:
6d3b0000 //show_int(15213);
48211843 //show_float(152.13);
04ff6100 //show_pointer((void *)&x);
*/
2.60 写出该C函数代码unsignedreplace_byte(unsigned x,int I,unsigned char b)。