我正在做我在C中的第一個家庭作業任務,我正在嘗試抓住指針。理論上它們是有意義的,但在執行中我有點模糊。我有這個代碼,它應該是一個整數x,找到它的最低有效字節,並將Y替換爲同一位置的該字節。 GCC返回與:初學者的指針(有代碼)
「2.59.c:34:2:警告:15:6傳遞 'replace_with_lowest_byte_in_x' 的參數1時將整數指針,未作鑄造
2.59.c [默認啓用]:注意:期望'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;
}
嘿 - 感謝您的幫助!我對C和指針非常陌生。修正了與常數有關的問題;然而,我將如何去訪問/更改中的值? –