programa.c #include int main(int argc, char **argv) { extern int variableCompartida; printf("MAIN VALOR = %d DIRECCION = %p\n", variableCompartida, &variableCompartida); printf("LE ASIGNO 333 EN MAIN\n"); variableCompartida = 333; printf("MAIN VALOR = %d DIRECCION = %p\n", variableCompartida, &variableCompartida); printf("AHORA LLAMO A LA FUNCION\n"); funcionCompartida(1); printf("VALOR = %d DIRECCION = %p\n", variableCompartida, &variableCompartida); } biblioteca.c #include int variableCompartida; void funcionCompartida(int a) { printf("BIBLIOTECA VALOR = %d DIRECCION = %p\n", variableCompartida); printf("BIBLIOTECA le asigno 999\n"); variableCompartida=999; } SALIDA: tmp$ ./ptest MAIN VALOR = 0 DIRECCION = 0x80497fc LE ASIGNO 333 EN MAIN MAIN VALOR = 333 DIRECCION = 0x80497fc AHORA LLAMO A LA FUNCION BIBLIOTECA VALOR = 333 DIRECCION = 0xb7f410d0 BIBLIOTECA le asigno 999 VALOR = 999 DIRECCION = 0x80497fc