ПредишенСледващото

езиците за програмиране C,

С език за програмиране

Променливата може да бъде определена по външните ниво само веднъж във файла източник. Ако зададете съхранение клас спецификатор статична. другите изходни файлове в променливите със същото име, могат да бъдат определени. Тъй като всеки дефиниция на статичен видим само в рамките на своя източник файл, след конфликта няма да възникнат.

езиците за програмиране C,

С език за програмиране

екстернант INT I; / * Позоваване и определено по-долу * /

ФОРМАТ ( "\ п.", I); / * I е равно на 4 * / следваща ();

INT I = 3; / * Определяне на I * / следваща ()

ФОРМАТ ( "\ п.", I); / * I е равно на 5 * / други ();

езиците за програмиране C,

С език за програмиране

съхранение клас спецификатор регистър инструктира компилатора да разпредели памет за него в променлива регистър, ако е възможно. Използването на регистър на паметта обикновено води до по-бързо време за достъп и до по-малък размер на получения код. Променливите, декларирани с класа на съхранение регистър имат една и съща видимостта като променлива автоматично.

Променлива обявен на национално равнище със статични за съхранение клас спецификатор. Той разполага с глобална живот, и се вижда само в рамките на блока, в който е обявена. За разлика от променливата автоматично. Променливите, декларирани като статични. запази тяхната стойност в края на блока.

Memory статични променливи на класа може да се инициализира с константен израз. Ако няма изрично инициализация, класът на съхранение статична променлива

езиците за програмиране C,

С език за програмиране

Тя автоматично се настройва на 0. Инициализиращите се прави веднъж по време на компилация. Инициализиране на променлива клас статичната памет не се повтарят в новия входа на блока.

Променлива обявен с ученик за съхранение клас спецификатор. Това е препратка към променлива със същото име външно зададени във всяка програма източник файл.

Пример: INT I = 1; Основната ()

/ * Позоваване I, дефинирани по-горе * / екстернант междинно съединение I;

/ * Първоначална стойност е нула; а е видим само в основната * / статичен Int А;

/ * Б се съхранява в регистър, ако е възможно * / регистър междинно съединение б = 0;

/ * Клас съхранение подразбиране е автоматично * / междинно съединение с = 0;

/ * Стойностите печатни са 1, 0, 0, 0 * / ФОРМАТ (, I, а, б, в "\ п \ п \ п \ п ...."); други ();

/ * I е предефинирани * / INT I = 16;

/ * Това а е видим само в друга * / статичен Int а = 2;

/ * Стойностите са отпечатани 16, 4 * / ФОРМАТ (, I, а "\ п \ п ..");

езиците за програмиране C,

С език за програмиране

Аз променлива външно ниво. Променлива клас статичната памет автоматично се настройва на 0. След инициализиране се пропуска. Print извикване на функция (ако приемем, че функцията за печат е дефинирано в определено място на източник програма) отпечатва стойност 1. 0. 0 0 ..

В други функции. променливата I се предефинира като локална променлива с начална стойност на 16. Това не се отразява на стойността на външна променлива аз. Променливата е обявен като клас съхранение статична променлива с начална стойност на 2. Това не е в противоречие с една. декларирани в основната функция. тъй като видимостта на променливи на класа статична памет вътрешно ограничен до блока, в който е обявена.

Функциите могат да се декларират с класа на съхранение ТЕХНОЛОЗИТЕ статичен или ученик. Функциите винаги глобален живот.

Функции, декларирани като ученик видими в рамките на всички изходни файлове, които правят програмата. Всяка функция може да предизвика екстернант функция.

Синтактично инициализатор запис се предхожда от знак

езиците за програмиране C,

С език за програмиране

Променливите, декларирани при външното ниво, може да се инициализира. Ако те не са изрично инициализира, те се свежда до нула при съставянето или свързването. Всяка променлива декларирана с клас Спецификаторът за съхранение статична. Той може да се инициализира с константен израз. Инициализиране статични променливи клас се извършва веднъж по време на компилация. Ако няма изрично инициализация на класа външна статични променливи на автоматично се задават на нула.

Основни видове и типове показалеца

Стойността определя на променливата експресията. За да изразите правилата за обмен са валидни.

езиците за програмиране C,

С език за програмиране

Списъкът на инициализатори - последователност от инициализират, разделени със запетая. Всяка инициализатор в последователността - е постоянна експресия, или списък на инициализират. Ето защо, затворени в скоби списък може да се появи в друг списък за инициализация. Този дизайн се използва за инициализиране на елементите на композитни структури.

За всеки списък на стойностите инициализация на постоянни изрази са определени по реда на елементите на композитен променлива. Когато комбинацията се инициализира, списъкът с инициализатор е единственият постоянен израз. Стойността на постоянна експресия се определя на първия елемент на комбинацията.

Ако списъкът на инициализация стойности по-малки, отколкото в композитната тип, а след това на свободната памет инициализира с нула. Ако броят на инициализация стойности повече, отколкото се изисква, след грешка е хвърлен.

Тези правила важат за всеки вложен списък инициализатор, по същия начин, както го правят в цялостната структура.

Тези допълнителни запетаи са разрешени, но не е необходимо. Тя изисква само тези запетаи, които споделят постоянните изрази и списъци на инициализация. Ако списъкът на инициализатори не е структурирана от композитен обект, а след това му стойност се определя в реда, в който елементите на закачен обекта.

Скоби може да се появи около отделните инициализират в списъка.

Когато компоненти се инициализират променливите, трябва да се уверите, че правилното използване на скоби и списъци на инициализират. Следният пример илюстрира по-подробно тълкуване на презрамките на компилатора.

езиците за програмиране C,

С език за програмиране

Масивът може да се инициализира с низ буквално.

овъгляване код [] = "ABC";

инициализира кода като масив от символи на четирите елемента. Четвъртият елемент е характерът \ 0. който завърши всички низовете.

овъгляване код [3] = "ABCD"

В примера, само първите три знака са възложени на код инициализатор масив. D символ и нула символ се изхвърля.

Ако низът е по-кратък от определения размер на масива, останалите елементи на масива се инициализира с нула (символ \ 0).

Видове структури, комбинирани и трансфери

езиците за програмиране C,

С език за програмиране

която е обявена. структура подравняване Име или изброяване е маркер.

typedef [. ];

Имената на по-големите платци на структурни видове и комбиниране са тип спецификатори за всеки от тях. Имената на показалеца за видове, масив и функция дава със следната синтактична форма:

езиците за програмиране C,

С език за програмиране

абстрактно declarator - един declarator без идентификатор, състояща се от един или повече модификатори на указатели, масиви и функции. модификатор указател * В винаги се появява пред идентификатора в declarator, докато модификатор масив [] или функция () се появи след идентификатора. По този начин, с цел да се интерпретират правилно абстрактната declarator, трябва да се започне с имплицитна идентификатор тълкуване.

Изразяване и прехвърляне

В C са определени стойности на изразяване. Освен проста операция възлагане от =. С поддържа съединение операция задача че преди заданието изпълнява допълнителни операции на техните операнди. Крайната стойност на резултата зависи от предимството на операции, както и от страничните ефекти, ако те се появят. Редът на оценка се определя от обединението на операнди и операции в израз. Странични действия - тя се променя състоянието на машината, причинени от процеса на оценяване израз.

В израз с страничен ефект, изчисляването на операнди стойности може да зависи от друга. За същите операции по реда, в който са изчислени операндите, в резултат на експресия зависи.

Стойността, представена чрез всяка операнд в експресията е от тип, който може да бъде превърнат в други видове в даден контекст. Тип реализации се провеждат в

Свързани статии

Подкрепете проекта - споделете линка, благодаря!