FIVE CLASSES OF STORAGE:
- AUTOMATIC
- REGISTER
- STATIC
-> Static with a scope within the block
-> Static with an external binding
-> Static binding to vnutrinney
//VARIABLES IN BLOCK 1
#include <stdio.h>
int main()
{
int x = 30;
printf("x во внешнем блоке; %d по адресу %p \n", x, &x);
{
int x = 77;
printf("x во внутреннем блоке; %d по адресу %p \n", x, &x);
}
printf("x во внешнем блоке; %d по адресу %p \n", x, &x);
while (x++ < 33) //исходная переменная
{
int x = 100; //новая переменная х, скрывающая первую переменную х
x++;
printf("x в цикле while; %d по адресу %p \n", x, &x);
}
printf("x во внешнем блоке; %d по адресу %p \n", x, &x);
return 0;
}
ВЫВОД НА ЭКРАН
x во внешнем блоке; 30 по адресу 0xffffcc0c
x во внутреннем блоке; 77 по адресу 0xffffcc08
x во внешнем блоке; 30 по адресу 0xffffcc0c
x в цикле while; 101 по адресу 0xffffcc04
x в цикле while; 101 по адресу 0xffffcc04
x в цикле while; 101 по адресу 0xffffcc04
x во внешнем блоке; 34 по адресу 0xffffcc0c
//VARIABLES IN BLOCK 2
#include <stdio.h>
int main()
{
int n = 8;
printf(" первоначально n=%d по адресу %p \n", n, &n);
for (int n = 1; n < 3; n++)
printf(" цикл 1: n= %d по адресу %p \n", n, &n);
printf(" После цикла 1: n= %d по адресу %p \n", n, &n);
for (int n = 1; n < 3; n++)
{
printf(" индекс цикла 2 n = %d по адресу %p \n", n, &n);
int n = 6;
printf(" индекс цикла 2: n = %d по адресу %p \n", n, &n);
n++;
}
printf(" После цикла 2 n = %d по адресу %p \n", n, &n);
return 0;
}
ВЫВОД НА ЭКРАН
первоначально n=8 по адресу 0xffffcc0c
цикл 1: n= 1 по адресу 0xffffcc08
цикл 1: n= 2 по адресу 0xffffcc08
После цикла 1: n= 8 по адресу 0xffffcc0c
индекс цикла 2 n = 1 по адресу 0xffffcc04
индекс цикла 2: n = 6 по адресу 0xffffcc00
индекс цикла 2 n = 2 по адресу 0xffffcc04
индекс цикла 2: n = 6 по адресу 0xffffcc00
После цикла 2 n = 8 по адресу 0xffffcc0c
Комментариев нет:
Отправить комментарий