2016-08-26 2 views
0

Ich möchte die Funktion show_int() unten tatsächlich tun wissen ...Was bedeutet dieser C-Code? - Computersysteme Die Perspektive eines Programmierers

Dieser Code ist in der Seite 28 von Computer Systems A Programmer's Perspective.

#include <stdio.h> 

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_int(int x) { 
    show_bytes((byte_pointer) &x, sizeof(int)); 
} 

void main() { 
    show_int(20); 
    getchar(); 
} 

Antwort

0

Die wichtigste Sache zu verstehen ist, die Besetzung zu *byte_pointer (aka unsigned char):

(byte_pointer) &x 

Sie daran denken können Zeiger auf int (in Ihrem Fall: 20) als Umwandlung in eine Reihe von Bytes (das können 4 oder 8 oder noch mehr Bytes sein, abhängig von der Architektur).

Was die show_bytes()-Funktion dann tut, ist nur Iterieren über ein Byte-Array, um seine nachfolgenden Bytes anzuzeigen, um es zu hexadecimal format zu formatieren.