/ / O que essa linha no código significa? (matriz de ponteiros para caracteres)? - c, matrizes, ponteiros, caractere, tamanho

O que essa linha no código significa? (matriz de ponteiros para caracteres)? - c, matrizes, ponteiros, char, tamanho

Nesse código, a "matriz" é uma matriz de ponteiros para caracteres? Ou alguma outra coisa?

struct tmep{
char (*array) [SIZE];
}

Desde já, obrigado :)

Respostas:

7 para resposta № 1

É um ponteiro para uma matriz de SIZE chars.

A declaração imita o uso, então você avalia o parêntese primeiro, (*array) dá-lhe um char[SIZE].

Para alocar, a versão estável é como de costume

array = malloc(num_elements * sizeof *array);

para especificar o tamanho de cada objeto (char[SIZE] aqui) no bloco, tomando o sizeof o ponteiro não referenciado. Você não precisa alterar essa alocação se o tipo mudar, por exemplo, para int (*)[SIZE].

Se você deseja especificar o tipo,

array = malloc(num_elements * sizeof(char (*)[SIZE]));

Isso aloca - se malloc obtém sucesso - um bloco grande o suficiente para num_elements matrizes de SIZE chars, cada uma dessas matrizes é acessada com

array[i]

e a chars nas matrizes no bloco com

array[i][j]