练习题2.5

 练习题2.5_第1张图片

答案 

 

 

#include 
#include 
 typedef unsigned char *byte_pointer;
 
  void show_bytes(byte_pointer start,size_t len){
  	size_t i;
  	for(i=0;i

理解一下程序:

我们为了获得多字节对象x的从首地址开始的连续len个字节里面存储的数据,

(1)获得对象x第一个字节的地址。

C的取地址运算符&创建一个指针。表达式&x创建了一个保存变量x的位置的指针,这个指针的类型取决于x的类型。

为了获得一个字节的指针,必须强制类型转换。

强制类型转换(byte_pointer) &x表明无论指针&x以前是什么类型,它现在就是一个指向数据类型为unsigned char的指针。

(2)第一个字节数据以及之后个字节地址

已经获得了第一个字节地址start,对该指针解除引用可以是*start或start[0],那之后字节就是*(start+i)或start[i]。

对指针解除引用意味着获得指针指向的值。

使用方括号数组表示法等同于对指针接触引用。p[i]意味着取地址p+i的值,也就是*(p+i)

数组名和指针变量都既可以使用指针表示法也可以使用数组表示法。

数组名:int a[10];a[0]=1;*(a+4)=12;指针变量:int *p=new int[10];*p=1;p[4]=12;

(3)输出%.2x

printf中%x表示以十六进制形式输出,%.2x表明整数必须用至少两个数字的十六进制格式输出。

size_t类型定义在cstddef头文件中。

你可能感兴趣的:(深入理解计算机系统)