Inicializace skalárních typů
Při inicializaci skalární typy, hodnota přiřazení výraz je přiřazen proměnné.Pravidla převodu pro přiřazení použít.(Viz Převody typu informace o převodu pravidla.)
Syntaxe
declaration:
Specifikátory prohlášení init-declarator seznam opt**;**Specifikátory prohlášení:
prohlášení specifikátoru třídy úložiště specifikátory optspecifikátor typu prohlášení specifikátory opt
typ kvalifikátoru prohlášení specifikátory opt
init declarator seznamu:
init-declaratorinit declarator seznamu , init declarator
init declarator:
declaratordeclarator = inicializátor / * pro inicializaci skalární * /
Inicializátor:
přiřazení výraz
Možné inicializovat proměnné libovolného typu, za předpokladu, že vyhovují následujícím pravidlům:
Můžete inicializovat proměnné deklarované na úrovni souboru oboru.Pokud není výslovně inicializovat proměnné na vnější úrovni je ve výchozím nastavení inicializován 0.
Konstantní výraz lze použít všechny globální proměnné deklarované pomocí inicializace statickéspecifikátoru třídy úložiště. Proměnné jsou deklarovány jako statické jsou inicializovány při zahájení provádění programu.Pokud můžete inicializovat explicitně jako globální statické proměnné, inicializaci 0 ve výchozím nastavení a každý člen, který má typ ukazatele je přiřazen ukazatel s hodnotou null.
Proměnné deklarované pomocí automaticky nebo zaregistrovat specifikátoru třídy úložiště jsou inicializovány při každém spuštění ovládacího prvku předává bloku v níž jsou deklarovány.Pokud vynecháte inicializátor z prohlášení o Automatické nebo zaregistrovat proměnné, počáteční hodnota proměnné nedefinovaná.Pro automatické a hodnoty registru, inicializátor není omezeno pouze na právě konstanta; může být libovolný výraz zahrnující dříve definované hodnoty i funkce volání.
Počáteční hodnoty pro externí deklarace proměnných a všechny statické proměnné, zda vnější nebo vnitřní, musí být konstantní výrazy.(Další informace naleznete v tématu Konstantní výrazy.) Adresa kterékoli externě prohlášené nebo statické proměnné je konstantní, lze použít inicializovat interně prohlášených statické ukazatel Proměnná.Však adresu automaticky proměnné nelze použít jako inicializátoru statické, protože mohou být různé pro každé spuštění bloku.Variabilní nebo konstantní hodnoty slouží k inicializaci automaticky a zaregistrovat proměnné.
Pokud má prohlášení identifikátor bloku oboru a identifikátor navázání externí, nemůže mít prohlášení inicializaci.
Příklady
Následující příklady ilustrují inicializace:
int x = 10;
Celočíselná proměnná x je inicializován konstantní výraz 10.
register int *px = 0;
Ukazatel px je inicializován 0, vyrábějící ukazatele "null".
const int c = (3 * 1024);
Tento příklad používá konstantní výraz (3 * 1024) inicializace c na konstantní hodnotu, která nelze změnit, protože const klíčové slovo.
int *b = &x;
Tento příkaz inicializuje ukazatel b s adresou jiné proměnné x.
int *const a = &z;
Ukazatel a je inicializována s adresou proměnné pojmenované z.Však od té doby je zadán jako const, proměnná a lze inicializovat pouze, nikdy změněna.Vždy odkazuje na stejné místo.
int GLOBAL ;
int function( void )
{
int LOCAL ;
static int *lp = &LOCAL; /* Illegal initialization */
static int *gp = &GLOBAL; /* Legal initialization */
register int *rp = &LOCAL; /* Legal initialization */
}
Globální proměnná GLOBAL je deklarována na vnější úrovni tak, že má globální životnost.Lokální proměnná LOCAL má automaticky třídy úložiště a pouze adresu během provádění funkce, která je deklarována.Proto pokusu inicializovat statické ukazatel Proměnná lp s adresou LOCAL není povoleno.Statické ukazatel Proměnná gp na adresu můžete inicializovat GLOBAL tuto adresu je vždy stejný.Podobně *rp možné inicializovat, protože rp je místní proměnné a mohou mít nonconstant inicializátor.Při každém zadání blok LOCAL má novou adresu, která je pak přiřazen rp.