суббота, 17 декабря 2016 г.

Storage Classes



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

Комментариев нет:

Отправить комментарий