我正在用 C 做我的第一次家庭作业,我正在努力掌握指针。它们在理论上是有道理的,但在执行时我有点模糊。我有这段代码,它应该取一个整数 x,找到它的最低有效字节,然后用同一位置的那个字节替换 y。GCC 返回:
“2.59.c:34:2:警告:传递 'replace_with_lowest_byte_in_x' 的参数 1 使指针从整数不进行强制转换 [默认启用]
2.59.c:15:6:注意:预期为 'byte_pointer' 但参数的类型为 'int'"
论点 2 也是如此。有人可以向我解释这里发生了什么吗?
#include <stdio.h>
typedef unsigned char *byte_pointer;
void show_bytes(byte_pointer start, int length) {
int i;
for (i=0; i < length; i++) {
printf(" %.2x", start[i]);
}
printf("\n");
}
void replace_with_lowest_byte_in_x(byte_pointer x, byte_pointer y) {
int length = sizeof(int);
show_bytes(x, length);
show_bytes(y, length);
int i;
int lowest;
lowest = x[0];
for (i=0; i < length; i++) {
if (x[i] < x[lowest]) {
lowest = i;
}
}
y[lowest] = x[lowest];
show_bytes(y, length);
}
int main(void) {
replace_with_lowest_byte_in_x(12345,54321);
return 0;
}