Здравствуйте, vip_delete, Вы писали:
1.h
static int x;
void init();
1.c
#include "1.h"
void init()
{
x = 1912;
}
main.c
#include "1.h"
#include <stdio.h>
void main()
{
init();//при заходе сюда меняется аддрес x! %| и 1912 присваевается хз куда.
printf("%d",x);
}
Две единиицы трансляции 1.c и main.c объявляют две разные статические переменные int x. После этого init() присваивает 1912 своей переменной, а main распечатывает свою.
//1.h
extern int x;
void init();
//1.c
#include "1.h"
int x;
void init()
{
x = 1912;
}
// main.c
#include "1.h"
#include <stdio.h>
int main(int, char**)
{
init();
printf("%d\n", x);
return 0;
}
Здесь 1.c и main.c объявляют внешнюю переменную x, и 1.c её определяет.