Wie viele bytes hat char definiert in einer Struktur nehmen?

Wenn ich ein Zeichen definieren geben Sie eine Struktur, es scheint, nehmen die mehr als 1 byte; in der Tat, es scheint, nehmen die 4 bytes.

Unten ist mein Programm:

#include <stdio.h>

int main(void)
{
    struct book{
        char name;
        float price;
        int pages;
    };
    struct book b1={'B',130.00,550};
    printf("\nAddress of structure:%u",&b1);
    printf("\nAddress of character name:%u",&b1.name);
    printf("\nAddress of float price:%u",&b1.price);
    printf("\nAddress of integer pages:%u",&b1.pages);
    printf("\n\n");
    return 0;
}

Wenn ich das Programm, bekomme ich die folgenden Ausgabe:

    Address of structure:557762432
    Address of character name:557762432
    Address of float price:557762436
    Address of integer pages:557762440

Warum ist es, dass ich den Unterschied von 4 bytes zwischen Adresse der Variablen "name" und die variable "Preis"?

Dem system, auf dem dieses Programm ausgeführt wird, x86_64 bit arch Fedora-14.

Der compiler ist die Verpackung der Struktur, so dass die Daten der Mitglieder richtig ausgerichtet sind und das Programm schnell laufen kann. Mit schlechten Ausrichtung einige chips(ARM) nur scheitern, andere (x86) laufen Sie einfach langsamer.
In 64-bit-Computer-Speicher-Wort erstellt von 64 bit, wie es war, 32-bit für 32-bit-Adresse x86_64
Vielen Dank für Ihre Antworten, Lesen Sie mehr über Polsterung

InformationsquelleAutor mrashok | 2012-01-18

Schreibe einen Kommentar