Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КП все ответы.doc
Скачиваний:
4
Добавлен:
28.10.2018
Размер:
312.83 Кб
Скачать

15, Обл.Видимости.Классы памяти

Объявление вводит имя(переем-ю,идентифекатор) в обл. видимости,это значит,что имя м.исп. в опр-ой части текста пр-мы. Для имени объявлены в теле ф-ции(локальное имя) ОВнач-ся с место объявление ф-ции и до конца ф-ции.Имя наз.глобальным, если оно объявлено вне люб.ф-ции,класса или пространства имен. ОВ глобальных имен – от их объявления до конца файла. Объявление ф-ции в блоки; м. скрыть объявление этого имени в охватывающем блоке или глобальное объявление имени.

Пр, int x; void f ()

{

int x;

x=1;

………

{

int x;

x=2;}

}…..

int *p=&x

К скрытому глобальному имени м. обратиться с пом.оп-ра разрешения обл.видимости(::).

Пр, int x=0;

void f ()

{

int x=1;

:: x=2;

printf(“% d”,x)

}

printf(“% d”,x)

Локальная перем-я инициализирует в момент вып-я строки сод-щей ее опр-е. По умолчанию это происходит при каждом вызове ф-ции и каждый раз соз.новая перем-я.Если локальная перем-я объявляется, как static, то при всех вызовов ф-ции для хр-я ее зн-я будет исп. единственный статически размещенный в памяти объект (д-й механизм реализован на С++).

Пр, void f(int a)

{while(a--);

{static int n=0;

int x=0;

printf(“n= = % d,x = =% d” \n,n++,x)

int main()

{

f(3);

}

В рез-те на экран выведет:

n= =0, x= =0

n= =1, x= =0

n= =2, x = =0

Статистические перем-е – это аналог глобальных перем-х,кот. описаны локальны.

Классы памяти в C и C++Переменная в этих языках должна принадлежать ровно к одному классу памяти, что указывается с помощью ключевого слова, который пишется перед типом переменной.auto — автоматическая (локальная), динамическая переменная. Автоматические переменные создаются при входе в функцию и уничтожаются при выходе из неё. Они видны только внутри функции или блока, в которых определены.static — статическая переменная (локальная). Статические переменные имеют такую же область действия, как автоматические, но они не исчезают, когда содержащая их функция закончит свою работу. Компилятор хранит их значения от одного вызова функции до другого.

extern — внешняя (глобальная) переменная. Внешние переменные доступны везде, где описаны, а не только там, где определены. Включение ключевого слова extern позволяет функции использовать внешнюю переменную, даже если она определяется позже в этом или другом файле.

register — регистровая переменная (локальная). Это слово является всего лишь «пожеланием» компилятору помещать частоиспользуемую переменную в регистры процессора для ускорения программы.

Класс памяти можно не указывать, тогда действуют следующие умолчания:

переменные, описанные внутри функции или блока, считаются локальными (auto)

переменные, описанные вне всех функций, считаются внешними.

функции считаются внешними.

16, Строки.Ф-ции раб.Со строками.

Один из применений одномерных массивов явл.строки(в яз.С). В С нету типа строк, а строки представляются в виде символьных массивов(состоящих из символьных констант заканчивающихся мультименаторами ‘\0’). При объявлении символьных массивов сл-ет задавать размер,достаточно для хр-я всех символов строки. Инициализация строк м.вып-ся с пом. строковых констант.Пр, ‘\0’

char s[10]= “privet”;

Д-я запись соот-ет сл-щей записи:

char s[10]= {‘p’, ‘r’, ‘i’, ‘v’, ‘e’, ‘t’, ‘\0’} Поддержка оп-ции над строками обеспечивается с пом. прототипов ф-ции,хранящихся в основном в модулях string,stdio.h. Ф-ции:1.size_t strlen(char *S)-фактически явл. синонимом для беззнакового целого типа и обозначает размер перем-е тип памяти; 2.char *strspy (char*s1, char*s2)-копирует посл-ть символов из строки s2 в нач.строки s1;3.char *strcat (char*s1, char*s2)-сцепление строк; 4.char *strhspy (char*s1, char*s2,size_t n)- аналогично 2; 5. char *strhcat (char*s1, char*s2,size_t n)-аналогично 3; 6.int strcmp (char*s1, char*s2)- вып-ет посимвольные сравнения стр s1 и s2, если они совпадают,то возвращает 0, если различаются, то возвращает зн-е = разности кодов 1-ой пары несовпадающих символов; 7. int strhcmp (char*s1, char*s2,size_t n)- аналогично 6,не более n символов; 8. char *strstr (char*s1, char*s2)-возвращает указатель на 1-ое вхождение стр s2 в стр s1; 9. char *strchr (char*s, char*с)- возвращает указатель на 1-ое вхождение символов с в стр s; 10. char *strrchr (char*s, char*с)-аналогично 9. В заголовочном файле stdlib.h сод.опис-е еще нескольких ф-ции:

int atoi (char*s)-возвр-ет целое число записанное в стр s(если стр.не явл.числом,то 0); double atof (char*s)-дробное число; char*itoa (int n, char*s, int r)-в стр.s формирует запись целого числа n в сист.счисления с основанием r.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]