Но если вы доступ к перемеююому от всех функций в всем архиве источника, то это чонсервная банка также сделанная с статическим keyword, но путем класть определение вне всех функций. Например:
#include <stdio.h>
static int num = 10; /* будет доступно от всего архива источника */
int main(void)
{
printf("The Number Is: %d\n", num);
return 0;
}
И будут также случаи где перемеююый быть доступна от всей программы, которая может состоять нескольких архивов источника. Это вызвано гловальное переменным и следует избежать когда необходимо.
Это также сделано путем класть определение вне всех функций, но без использования статического keyword:
#include <stdio.h>
int num = 10; /* будет доступно от всей программы! */
int main(void)
{
printf("The Number Is: %d\n", num);
return 0;
}
Будет также extern keyword, который использован для достигая гловальных перемеююых в других модулях. Будут также немного квалификаторов вы можете добавить к переменным определениям. Самая важная их будет const. Перемеююый определена по мере того как const не может быть доработано.
2 больше модификатора более менее общ использованы. Модификатор испаряющих и регистра. Испаряющий модификатор требует, что составитель фактическ достигает перемеююого every time прочитано. Он не может оптимизировать перемеююый путем класть его в регистре или так. Это главным образом использовано для целей etc multithreading и interrupt обрабатывая.
Модификатор регистра спрашивает, что составитель оптимизирует перемеююый в регистр. Это только по возможности с автоматическими перемеююыми и in many cases составитель может улучшать отборно перемеююые, котор нужно оптимизировать в регистры, поэтому этот keyword obsolescent. Единственное сразу последствие делать переменный регистр что свой адрес можно принять.
Таблица перемеююых, уступанная следующая страница описывает тип хранения типа 5 типов хранения.
В таблице мы видим keyword extern помещен в 2 рядках. Extern keyword использован в функциях для того чтобы объявить статическую внешнюю перемеююый определена в другом месте.
Variable Storage class |
Defined as |
Scope |
Class |
Keyword |
Automatic |
Keyword is optional |
Temporary |
In a function |
Local |
Static |
static |
Temporary |
In a function |
Local |
Register |
register |
Temporary |
In a function |
Local |
External |
Optional |
Permanent |
Outside a function |
Global (all files) |
External |
Static |
Permanent |
Outside a function |
Global (one file) |
|