"Atributo de classe" no C

Pessoal,

suponha que eu tenha o seguinte código em Java:

class Teste {
  int[] x;

  public static void main(String[] args) {
     Teste t = new Teste()
     t.x = new int[10];
     t.facaAlgo();
  }

  public void fazAlgo() {
    x[1] = 5;
  }
}

No código acima, x é um atributo da classe, e tanto o método main quanto o método fazAlgo tem acesso a ele.

Tem como eu fazer isso em C? Eu sei que esse termo “atributo de classe” não existe em C, mas eu queria um comportamento
parecido. Acredito que eu teria esse comportamento com variavel global, porem, eu só vou saber o tamanho do meu array
dentro do main, então eu não sei como fazer uma declaração de array parcial no C, onde no escopo de uma variavel global
eu falaria que quero um array e no main eu digo o tamanho dele.

Se alguem puder me ajudar eu agradeço!

[]'s

Cara, você só vai saber o tamanho do trem na main? Então não seria mais fácil você usar malloc, realloc, calloc, e free?
Respondendo a sua dúvida, sobre ‘static em C’: acho que existe static. Leia os dois links:
1 - http://www.java2s.com/Tutorial/C/0020__Language/Staticvariable.htm
2 - http://www.java2s.com/Tutorial/C/0020__Language/Staticversusautomaticvariables.htm

Será que ajuda?

Eu faria o seguinte:

  • Declara o x como ponteiro.
  • Declara x como static, assim ele só é visível pelas funções do mesmo arquivo onde foi declarado.
static int *x;

void main() {
    ...
    x = malloc(tamanho * sizeof(int));
    ...
    fazAlgo();
    free(x);
}

void fazAlgo() {
    x[1] = 5;
}