Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Variáveis globais existem em mais de um aquivo?

Exemplificando, a variável criada em um arquivo no arquivo 1 pode ter seu valor alterado pelo arquivo 2 e quando solicitada no arquivo 1 apresentar o valor atualizado? (No mesmo projeto, claro) Ou ela só existe no arquivo 1? Ou ainda seria preciso usar o endereço da memoria?

1 resposta
solução!

Existem dois conceitos distintos em jogo aqui. Declaração e definição.

Vamos criar 4 arquivos diferentes.

// cabecalho.h

#ifndef CABECALHO_H_
#define CABECALHO_H_

extern int var;

int getVar();

#endif

Neste arquivo declaramos os identificadores vare getVar, os quais, nesse momento, não existem em memória, mas funcionam unicamente para informar ao compilador que ele deve manter estes símbolos na tabela e seus tipos são como supra-mencionados.

// arquivo1.c

#include "cabecalho.h"

int var = 10;

Neste arquivo definimos o identificador var e inicializamos seu valor para 10. A partir deste momento o mesmo possui endereço em memória.

// arquivo2.c

#include "cabecalho.h"

int getVar() {
  return ++var;
}

Neste arquivo definimos o identificador getVar.

// main.c
#include <stdio.h>

#include "cabecalho.h"

int main() {
  for (int i = 0; i < 5; i++)
    printf("%d\n", getVar());
  return 0;
}

Teste a função main e você verá que o valor de var é alterado consistentemente.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software