Пример взаимодействия функций с использованием глобальных переменных

Пример взаимодействия функций без использования глобальных переменных

Результат работы программы

Пример

Результат работы программы

Пример программы

Глобальные и локальные объекты

Результат работы программы

Пример

Результат работы программы

Пример

Пример программы

Общая форма записи

sizeof(объект)

 

 

#include <stdio.h>                
#define pi 3.14159625                
main() { int x;                  
                 
printf( "\n Размер памяти под целое число с Id байт.",
sizeof( int));                
printf( "\n Размер памяти под тип double %d байт.",

  sizeof(double));  
  printf("\n Размер памяти под переменную %d байт.",
  sizeof(x));  
  printf("\n Размер памяти под константу pi %d байт.",
} sizeof(pi));  

Операция «запятая»( « , » ) предназначена для связывания между собой выражений. Список, разделенный запятой, трактуется как единое выражение и вычисляется слева направо.

 

main()  
{  
int x=3, у;  
у=3, 4*х;  
printf ("\n Значение y=%d.", у);
}  

Значение у=12

main()

{

int i, b;

for (i=0, b=l; i <= 5;i++


{


b=b+i;

printf("\n Значение b=%d.",b);


 


Значение b=l

Значение b=2

Значение b=3



Значение Ь= = 4.
Значение Ь= =5.
Значение Ь= = 6.

Глобальныминазываются объекты, объявление которых дано вне функции. Они доступны (видимы) во всём файле, в котором они объявлены, а также во всех внешних файлах (модулях).

Локальныминазываются объекты, объявление которых дано внутри функции. Эти объекты доступны только внутри той функции, в которой они объявлены.

В Си существует понятие времени жизни объекта, которое бывает глобальным или локальным. Объект с глобальным временем жизни характеризуется тем, что в течение всего периода выполнения программы с ним связана определённая ячейка оперативной памяти и какое-то значение. Объекту с локальным временем жизни выделяется новая ячейка оперативной памяти при каждом вхождении в блок, в котором объявлен этот объект. Когда выполнение блока завершается, память, выделенная под локальный объект, освобождается, и объект теряет своё значение.

#include <stdio.h> void autofunc(void)

{

int k=l;

printf("\n k = %u", k); k=k+l; }

main()

{

int i;

for(i = 0; i<=5; i++) autofunc();

}


 

к=
к=
к=
к=
к=
к=

Если в примере объявить переменную к как глобальную, результат работы программы будет иным.

 

#include <stdio.h>  
int k=l;  
void autofunc(void)  
{    
  printf("\n k = %u' ', k);
  k=k+l;  
}    
main()  
{ int i;  
  for (i = 0; i<=5; i + +)
  autofunc ();  
}    

 

k =
k =
k =
k =
k =

к = б

Замечание: глобальные переменные нужны для того, чтобы организовывать обмен информацией между функциями.

 

#include <stdio.h>  
int func(int xl, int x2)  
{  
int y;  
y=xl+x2;  
return(y);  
}  
main()  
{  
int xl, x2;  
c=func( xl, x2);  
/* вызов функции */
}  

 

#include <stdio.h>  
int xl, x2;    
int func(void)    
{    
y=xl+x2;    
return(y);    
}    
main()    
{    
xl=...; /* изменение значений */
Xz, •••/' / глобальных */  
/* переменных */  

  ...    
  c=func() ; /* вызов функции */
}      

Программа имеет недостаток: функция func не имеет формальных параметров, обмен информацией между функциями организован через глобальные переменные х\, х2. Существует опасность, что переменные х\, х2 будут случайно изменены в вызываемой функции.