SlideShare a Scribd company logo
C
Language
C Language Advanced
Lection 22
Содержание
• Области видимости переменных
• Классы памяти переменных
 auto
 register
 extern
 static
• Модификатор static для функции
• Ключевое слово volatile
23.05.2019 0:36 Advanced 2
Области видимости переменных
#include <stdio.h>
unsigned int myGlobalVariable;
int main()
{
unsigned int myLocalVariable_lv0;
{
unsigned int myLocalVariable_lv1;
{
unsigned int myLocalVariable_lv2;
}
}
return 0;
}
3
Пример #1
4
Пример #1
5
Классы памяти переменных
Класс памяти определяет:
• область действия переменной;
• время жизни переменной
6
Класс памяти auto
auto - спецификатор автоматического
класса памяти указывает на то, что объект
располагается в локальной (или
автоматически распределяемой) памяти.
7
Пример #2
8
Класс памяти register
register - спецификатор автоматического
класса памяти. Применяется к объектам, по
умолчанию располагаемым в локальной
памяти. Представляет из себя "ненавязчивую
просьбу" к транслятору (если это возможно) о
размещении значений объектов, объявленных
со спецификатором register в одном из
доступных регистров, а не в локальной
памяти.
9
Пример #3
10
Класс памяти extern
extern - cпецификатор внешнего
статического класса памяти. Обеспечивает
существование объекта с момента его
определения до конца выполнения
программы. Объект, объявленный со
спецификатором extern доступен во всех
модулях программы, то есть глобален
11
Класс памяти extern
12
Класс памяти static
static – спецификатор внутреннего статического
класса памяти. Применяется только(!) к именам
объектов и функций. В C этот спецификатор имеет
два значения. Первое означает, что определяемый
объект располагается по фиксированному адресу.
Тем самым обеспечивается существование объекта
с момента его определения до конца выполнения
программы. Второе значение означает
локальность. Объявленный со спецификатором
static локален в одном программном модуле (то
есть, недоступен из других модулей
многомодульной программы).
13
Пример #4
14
Пример #4
15
Пример #5
16
Модификатор static для функции
17
Пример #6
18
Классы памяти переменных
(сравнительная таблица)
19
Ключевое слово volatile
Ключевое слово volatile информирует
компилятор, что значение переменной
может меняться извне. Это может
произойти под управлением
операционной системы, аппаратных
средств или другого потока. Поскольку
значение может измениться, компилятор
каждый раз загружает его из памяти.
20
Пример #7
21
Пример #7
22
Ad

Recommended

язык програмирования
язык програмирования
Olegmingalev1997
 
Step 2
Step 2
DmitryTrushkin
 
C# Desktop. Занятие 14.
C# Desktop. Занятие 14.
Igor Shkulipa
 
Базовые операторы Java
Базовые операторы Java
metaform
 
моап 2011 04
моап 2011 04
Irina Hahanova
 
Глава 3: примитивные типы и операции с ними в Java
Глава 3: примитивные типы и операции с ними в Java
metaform
 
Roslyn API : SyntaxTree vs CodeDom, SemanticModel vs Reflection
Roslyn API : SyntaxTree vs CodeDom, SemanticModel vs Reflection
Denis Tsvettsih
 
Statements in VHDL - Concurrent Statements
Statements in VHDL - Concurrent Statements
vitaliykulanov
 
Attributes in VHDL
Attributes in VHDL
vitaliykulanov
 
Глава1: Обзор технологии Java
Глава1: Обзор технологии Java
metaform
 
Subprograms in VHDL, Procedures in VHDL
Subprograms in VHDL, Procedures in VHDL
vitaliykulanov
 
Basic principles of projects description in VHDL - ENTITY, ARCHITECTURE, LIBR...
Basic principles of projects description in VHDL - ENTITY, ARCHITECTURE, LIBR...
vitaliykulanov
 
Массивы в Java
Массивы в Java
metaform
 
Structural project description in VHDL
Structural project description in VHDL
vitaliykulanov
 
Этюды о буферизации: асинхронные оповещения, репликация обновлений, объединен...
Этюды о буферизации: асинхронные оповещения, репликация обновлений, объединен...
corehard_by
 
javascript_part1
javascript_part1
sovest
 
Statements in VHDL - Sequential Statements
Statements in VHDL - Sequential Statements
vitaliykulanov
 
Subprograms in VHDL, Functions in VHDL
Subprograms in VHDL, Functions in VHDL
vitaliykulanov
 
ветвление.условный оператор.циклы
ветвление.условный оператор.циклы
dasha2012
 
ук 03.001.02 2011
ук 03.001.02 2011
etyumentcev
 
лекция 2
лекция 2
Zhanna Kazakova
 
OpenMP и статический анализ кода
OpenMP и статический анализ кода
Tatyanazaxarova
 
20110515 csseminar velder_otsenki dlini slov
20110515 csseminar velder_otsenki dlini slov
Computer Science Club
 
TeaVM: dead code elimination and devirtualization
TeaVM: dead code elimination and devirtualization
Алексей Андреев
 
fp intro
fp intro
Ivan Glushkov
 
File input/output in VHDL
File input/output in VHDL
vitaliykulanov
 
20100321 virtualization igotti_lecture08
20100321 virtualization igotti_lecture08
Computer Science Club
 
тихонов кв работа с прерываниями в микроконтроллерах в 21 веке
тихонов кв работа с прерываниями в микроконтроллерах в 21 веке
Kirill Tikhonov
 
Individual task Networking
Individual task Networking
Roman Brovko
 
Networking essentials lect3
Networking essentials lect3
Roman Brovko
 

More Related Content

What's hot (20)

Attributes in VHDL
Attributes in VHDL
vitaliykulanov
 
Глава1: Обзор технологии Java
Глава1: Обзор технологии Java
metaform
 
Subprograms in VHDL, Procedures in VHDL
Subprograms in VHDL, Procedures in VHDL
vitaliykulanov
 
Basic principles of projects description in VHDL - ENTITY, ARCHITECTURE, LIBR...
Basic principles of projects description in VHDL - ENTITY, ARCHITECTURE, LIBR...
vitaliykulanov
 
Массивы в Java
Массивы в Java
metaform
 
Structural project description in VHDL
Structural project description in VHDL
vitaliykulanov
 
Этюды о буферизации: асинхронные оповещения, репликация обновлений, объединен...
Этюды о буферизации: асинхронные оповещения, репликация обновлений, объединен...
corehard_by
 
javascript_part1
javascript_part1
sovest
 
Statements in VHDL - Sequential Statements
Statements in VHDL - Sequential Statements
vitaliykulanov
 
Subprograms in VHDL, Functions in VHDL
Subprograms in VHDL, Functions in VHDL
vitaliykulanov
 
ветвление.условный оператор.циклы
ветвление.условный оператор.циклы
dasha2012
 
ук 03.001.02 2011
ук 03.001.02 2011
etyumentcev
 
лекция 2
лекция 2
Zhanna Kazakova
 
OpenMP и статический анализ кода
OpenMP и статический анализ кода
Tatyanazaxarova
 
20110515 csseminar velder_otsenki dlini slov
20110515 csseminar velder_otsenki dlini slov
Computer Science Club
 
TeaVM: dead code elimination and devirtualization
TeaVM: dead code elimination and devirtualization
Алексей Андреев
 
fp intro
fp intro
Ivan Glushkov
 
File input/output in VHDL
File input/output in VHDL
vitaliykulanov
 
20100321 virtualization igotti_lecture08
20100321 virtualization igotti_lecture08
Computer Science Club
 
тихонов кв работа с прерываниями в микроконтроллерах в 21 веке
тихонов кв работа с прерываниями в микроконтроллерах в 21 веке
Kirill Tikhonov
 
Глава1: Обзор технологии Java
Глава1: Обзор технологии Java
metaform
 
Subprograms in VHDL, Procedures in VHDL
Subprograms in VHDL, Procedures in VHDL
vitaliykulanov
 
Basic principles of projects description in VHDL - ENTITY, ARCHITECTURE, LIBR...
Basic principles of projects description in VHDL - ENTITY, ARCHITECTURE, LIBR...
vitaliykulanov
 
Массивы в Java
Массивы в Java
metaform
 
Structural project description in VHDL
Structural project description in VHDL
vitaliykulanov
 
Этюды о буферизации: асинхронные оповещения, репликация обновлений, объединен...
Этюды о буферизации: асинхронные оповещения, репликация обновлений, объединен...
corehard_by
 
javascript_part1
javascript_part1
sovest
 
Statements in VHDL - Sequential Statements
Statements in VHDL - Sequential Statements
vitaliykulanov
 
Subprograms in VHDL, Functions in VHDL
Subprograms in VHDL, Functions in VHDL
vitaliykulanov
 
ветвление.условный оператор.циклы
ветвление.условный оператор.циклы
dasha2012
 
ук 03.001.02 2011
ук 03.001.02 2011
etyumentcev
 
OpenMP и статический анализ кода
OpenMP и статический анализ кода
Tatyanazaxarova
 
20110515 csseminar velder_otsenki dlini slov
20110515 csseminar velder_otsenki dlini slov
Computer Science Club
 
File input/output in VHDL
File input/output in VHDL
vitaliykulanov
 
20100321 virtualization igotti_lecture08
20100321 virtualization igotti_lecture08
Computer Science Club
 
тихонов кв работа с прерываниями в микроконтроллерах в 21 веке
тихонов кв работа с прерываниями в микроконтроллерах в 21 веке
Kirill Tikhonov
 

More from Roman Brovko (20)

Individual task Networking
Individual task Networking
Roman Brovko
 
Networking essentials lect3
Networking essentials lect3
Roman Brovko
 
Gl embedded starterkit_ethernet
Gl embedded starterkit_ethernet
Roman Brovko
 
Networking essentials lect2
Networking essentials lect2
Roman Brovko
 
Networking essentials lect1
Networking essentials lect1
Roman Brovko
 
Bare metal training_07_spi_flash
Bare metal training_07_spi_flash
Roman Brovko
 
Bare metal training_06_I2C
Bare metal training_06_I2C
Roman Brovko
 
Glesk worshop
Glesk worshop
Roman Brovko
 
Bare metal training_05_uart
Bare metal training_05_uart
Roman Brovko
 
Bare metal training_04_adc_temp_sensor
Bare metal training_04_adc_temp_sensor
Roman Brovko
 
Bare metal training_03_timers_pwm
Bare metal training_03_timers_pwm
Roman Brovko
 
Bare metal training_02_le_ds_and_buttons
Bare metal training_02_le_ds_and_buttons
Roman Brovko
 
Bare metal training_01_hello_world
Bare metal training_01_hello_world
Roman Brovko
 
Bare metal training_00_prerequisites
Bare metal training_00_prerequisites
Roman Brovko
 
C language lect_23_advanced
C language lect_23_advanced
Roman Brovko
 
C language lect_21_advanced
C language lect_21_advanced
Roman Brovko
 
подготовка рабочего окружения
подготовка рабочего окружения
Roman Brovko
 
C language lect_20_advanced
C language lect_20_advanced
Roman Brovko
 
C language lect_19_basics
C language lect_19_basics
Roman Brovko
 
C language lect_18_basics
C language lect_18_basics
Roman Brovko
 
Individual task Networking
Individual task Networking
Roman Brovko
 
Networking essentials lect3
Networking essentials lect3
Roman Brovko
 
Gl embedded starterkit_ethernet
Gl embedded starterkit_ethernet
Roman Brovko
 
Networking essentials lect2
Networking essentials lect2
Roman Brovko
 
Networking essentials lect1
Networking essentials lect1
Roman Brovko
 
Bare metal training_07_spi_flash
Bare metal training_07_spi_flash
Roman Brovko
 
Bare metal training_06_I2C
Bare metal training_06_I2C
Roman Brovko
 
Bare metal training_05_uart
Bare metal training_05_uart
Roman Brovko
 
Bare metal training_04_adc_temp_sensor
Bare metal training_04_adc_temp_sensor
Roman Brovko
 
Bare metal training_03_timers_pwm
Bare metal training_03_timers_pwm
Roman Brovko
 
Bare metal training_02_le_ds_and_buttons
Bare metal training_02_le_ds_and_buttons
Roman Brovko
 
Bare metal training_01_hello_world
Bare metal training_01_hello_world
Roman Brovko
 
Bare metal training_00_prerequisites
Bare metal training_00_prerequisites
Roman Brovko
 
C language lect_23_advanced
C language lect_23_advanced
Roman Brovko
 
C language lect_21_advanced
C language lect_21_advanced
Roman Brovko
 
подготовка рабочего окружения
подготовка рабочего окружения
Roman Brovko
 
C language lect_20_advanced
C language lect_20_advanced
Roman Brovko
 
C language lect_19_basics
C language lect_19_basics
Roman Brovko
 
C language lect_18_basics
C language lect_18_basics
Roman Brovko
 
Ad

Recently uploaded (7)

Газовая промышленность Газовая промышленность
Газовая промышленность Газовая промышленность
sabetovagulmaral
 
Bondarenko, Maria (2020, February). Representation of Motion and Direction in...
Bondarenko, Maria (2020, February). Representation of Motion and Direction in...
MashaBondarenko4
 
FactoryTalk View Site Edition Руководство пользователя Том 1 Allen-Bredley.
FactoryTalk View Site Edition Руководство пользователя Том 1 Allen-Bredley.
xqtsxflc938
 
Saint Charbel,  Maronite monk and priest from Lebanon (Russian).pptx
Saint Charbel,  Maronite monk and priest from Lebanon (Russian).pptx
Martin M Flynn
 
VBA для чайников 3rd Edition Steve Cummings
VBA для чайников 3rd Edition Steve Cummings
fnupzgprv4318
 
PowerPoint 2003 for Dummies 1st Edition Doug Lowe
PowerPoint 2003 for Dummies 1st Edition Doug Lowe
yexvsrzykn2676
 
Milestones in analog and digital computing vol 1 3rd Edition Herbert Bruderer
Milestones in analog and digital computing vol 1 3rd Edition Herbert Bruderer
bjozmwfwh2753
 
Газовая промышленность Газовая промышленность
Газовая промышленность Газовая промышленность
sabetovagulmaral
 
Bondarenko, Maria (2020, February). Representation of Motion and Direction in...
Bondarenko, Maria (2020, February). Representation of Motion and Direction in...
MashaBondarenko4
 
FactoryTalk View Site Edition Руководство пользователя Том 1 Allen-Bredley.
FactoryTalk View Site Edition Руководство пользователя Том 1 Allen-Bredley.
xqtsxflc938
 
Saint Charbel,  Maronite monk and priest from Lebanon (Russian).pptx
Saint Charbel,  Maronite monk and priest from Lebanon (Russian).pptx
Martin M Flynn
 
VBA для чайников 3rd Edition Steve Cummings
VBA для чайников 3rd Edition Steve Cummings
fnupzgprv4318
 
PowerPoint 2003 for Dummies 1st Edition Doug Lowe
PowerPoint 2003 for Dummies 1st Edition Doug Lowe
yexvsrzykn2676
 
Milestones in analog and digital computing vol 1 3rd Edition Herbert Bruderer
Milestones in analog and digital computing vol 1 3rd Edition Herbert Bruderer
bjozmwfwh2753
 
Ad

C language lect_22_advanced

  • 2. Содержание • Области видимости переменных • Классы памяти переменных  auto  register  extern  static • Модификатор static для функции • Ключевое слово volatile 23.05.2019 0:36 Advanced 2
  • 3. Области видимости переменных #include <stdio.h> unsigned int myGlobalVariable; int main() { unsigned int myLocalVariable_lv0; { unsigned int myLocalVariable_lv1; { unsigned int myLocalVariable_lv2; } } return 0; } 3
  • 6. Классы памяти переменных Класс памяти определяет: • область действия переменной; • время жизни переменной 6
  • 7. Класс памяти auto auto - спецификатор автоматического класса памяти указывает на то, что объект располагается в локальной (или автоматически распределяемой) памяти. 7
  • 9. Класс памяти register register - спецификатор автоматического класса памяти. Применяется к объектам, по умолчанию располагаемым в локальной памяти. Представляет из себя "ненавязчивую просьбу" к транслятору (если это возможно) о размещении значений объектов, объявленных со спецификатором register в одном из доступных регистров, а не в локальной памяти. 9
  • 11. Класс памяти extern extern - cпецификатор внешнего статического класса памяти. Обеспечивает существование объекта с момента его определения до конца выполнения программы. Объект, объявленный со спецификатором extern доступен во всех модулях программы, то есть глобален 11
  • 13. Класс памяти static static – спецификатор внутреннего статического класса памяти. Применяется только(!) к именам объектов и функций. В C этот спецификатор имеет два значения. Первое означает, что определяемый объект располагается по фиксированному адресу. Тем самым обеспечивается существование объекта с момента его определения до конца выполнения программы. Второе значение означает локальность. Объявленный со спецификатором static локален в одном программном модуле (то есть, недоступен из других модулей многомодульной программы). 13
  • 20. Ключевое слово volatile Ключевое слово volatile информирует компилятор, что значение переменной может меняться извне. Это может произойти под управлением операционной системы, аппаратных средств или другого потока. Поскольку значение может измениться, компилятор каждый раз загружает его из памяти. 20