MOMPOM
1773 palavras
8 páginas
urasAtravés do conceito de estrutura, C oferece um mecanismo uniforme para a definição de registros, unidades de informação organizadas em campos de tipos que podem ser não-homogêneos. A definição de estruturas foi descrita na Seção 2.1.3.
Como um exemplo, esse mecanismo pode ser aplicado tanto a uma linha de código assembly, com campos associados a rótulo, código de operação, operandos e comentários, como a tabelas, com campos símbolo e valor. Considere a definição de uma entidade linha, composta por quatro componentes -- rotulo, opcode, operand, comment. Cada componente é um arranjo de caracteres de tamanho adequado à recepção de um dos campos das linhas de um programa assembly. Em uma estrutura C,
#define LINSIZE 80 #define LABSIZE 8 #define OPCSIZE 10 #define OPRSIZE 20 #define CMTSIZE (LINSIZE-(LABSIZE+OPCSIZE+OPRSIZE)) typedef struct linha { char rotulo[LABSIZE]; char opcode[OPCSIZE]; char operand[OPRSIZE]; char comment[CMTSIZE]; } Linha;
Variáveis deste tipo de estrutura podem ser definidas como
Linha l;
Apesar deste exemplo só ter como componentes seqüências de caracteres, qualquer tipo válido pode estar presente em uma estrutura -- até mesmo outra estrutura, como em
struct linCode { int posicao; Linha linha; };
Usando essa estrutura Linha, uma versão simplificada da função getLabel usada na Seção 4.2.1 seria:
char *getLabel(Linha linha) { char term; int pos; do { term = linha.rotulo[pos]; if (term == ':' || term == ' ') { linha.rotulo[pos] = '\0'; return(linha.rotulo); } ++pos; } while (pos < LABSIZ); linha.rotulo[pos] = '\0'; return(linha.rotulo); }
Em aplicações sucessivas do operador . -- quando for necessário acessar estruturas aninhadas -- a associativadade é da esquerda para a direita.
Em