Dav*_*vid 2 c parameters function
我正在从计算机系统程序员的角度研究2.1节,我理解代码在做什么,但我不明白为什么围绕形式参数"byte_pointer"后跟&x有括号?
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_float(float x) {
show_bytes((byte_pointer) &x, sizeof(float));
}
void show_int(int x) {
show_bytes((byte_pointer) &x, sizeof(int));
}
void show_pointer(void *x) {
show_bytes((byte_pointer) &x, sizeof(void *));
}
Run Code Online (Sandbox Code Playgroud)
你是一个float指向一个指针unsigned char*.然后你将访问每个浮点变量的字节.由于指针运算由它指向的事物的类型决定 - 它的增量或减量将由sizeof(unsigned char)或者1字节指示.您将逐字节访问浮点数.通过演员我们基本上说你需要考虑这个,unsigned char*即使它float*是我们正在通过.类型信息发生了变化 - 我们通过提供强制转换使编译器意识到我们已经意识到它.