Toda e qualquer informação que um programa utiliza está localizada na memória. Mas para que um
programa possa utilizar uma área de memória para armazenar informação, é necess'ario que tal 'area seja
previamente alocada, ou seja, é necessário requisitar ao sistema operacional que reserve uma 'area de
memória para o programa e que a proteja, afim de que outros programas não venham a ler/gravar dados
na região de memória reservada ao programa em quest~ao.
\end{document}
\ No newline at end of file
Imagine se um programa que utilizasse, para armazenar um índice de um for, a mesma área de
memória que outro programa usaria para armazenar uma entrada do teclado. Ou então, que a mesma
área de memória venha a ser utilizada tanto para armazenar dados de um programa quanto para armazenar o c'odigo de outro programa em execução. Cat'astrofes de todos os tipos podem ocorrer em
tais circunst^ancias e se não houver um gerenciamento de memória por parte do sistema operacional,
programar seria um desafio ainda maior, senão inviável.
Alocar uma área de memória significa pedir ao sistema operacional que reserve uma 'area para uso
Uma distinção importante quanto a bibliotecas é entre arquivos objeto e "headers"(cabe,calhos).
Um arquivo objeto é um programa quase inteiramente em código de máquina (linguagem que o
computador entende) a não ser por algumas refer^encias internas tais como, por exemplo, chamadas de
função.
O arquivo header (!bibname?.h) é o arquivo que apenas descreve os nomes das funções daquela biblioteca, al'em de declarar algumas variáveis, constantes, inclusão de outros arquivos, etc. A implementa,c~ao
das funções da biblioteca geralmente não está no header, e sim no arquivo objeto da biblioteca.
Ou seja, o arquivo objeto de uma biblioteca é onde se encontra realmente o código de implementação
de todas as funções da biblioteca.
B.2 Bibliotecas: Lista de funções
Neste ap^endice apresentamos apenas as funções que são usadas direta ou indiretamente neste curso, seja
êm exemplos ou em exercícios.
77
78 AP
^
êNDICE B. BIBLIOTECAS
B.2.1 Funções padrão (stdlib.h )
Funções:
abort abs atexit atof
atoi atol bsearch calloc
div ecvt exit exit
fcvt free fullpath gcvt
getenv itoa labs ldiv
lfind lrotl lrotr lsearch
ltoa makepath malloc max
mblen mbtowc mbstowcs min
putenv qsort rand random
randomize realloc rotl rotr
searchenv splitpath srand trtod
strtol strtold strtoul swab
system time ultoa wctomb
wcstombs
Constantes, tipos de dados e variáveis globais:
div t doserrno environ errno
êXIT FAILURE EXIT SUCCESS fmode ldiv t
NULL osmajor osminor psp
RAND MAX size t sys errlist sys nerr
version wchar t
B.3 Funções de entrada e saída padrão stdio.h
Funções:
clearerr fclose fcloseall fdopen feof ferror
fflush fgetc fgetchar fgetpos fgets fileno
flushall fopen fprintf fputc fputchar fputs
fread freopen fscanf fseek fsetpos ftell
fwrite getc getchar gets getw perror
printf putc putchar puts putw remove
rename rewind rmtmp scanf setbuf setvbuf
sprintf sscanf strerror strerror tempnam tmpfile
tmpnam ungetc unlink vfprintf vfscanf vprintf
vscanf vsprintf vsscanf
Constantes, tipos de dados e variáveis globais:
buffering modes BUFSIZ EOF
F BIN F BUF F EOF
F ERR F IN F LBUF
F OUT F RDWR F READ
F TERM F WRIT FILE
FOPEN MAX fpos t fseek/lseek modes
IOFBF IOLBF IONBF
L ctermid L tmpnam NULL
SEEK CUR SEEK END SEEK SET
size t stdaux stderr
stdin stdout stdprn
SYS OPEN TMP MAX
B.3.1 Funções de manipula,cão de strings (string.h)
Uma estrutura é uma coleção de uma ou mais variáveis agrupadas sob um único nome para facilitar a
sua manipulação. As variáveis de uma estrutura, ao contr'ario das vari'aveis de uma matriz, podem ser de
diferentes tipos de dados. Uma estrutura pode conter quaisquer tipos de dados válidos em C, inclusive
matrizes e até mesmo outras estruturas.
\end{document}
\ No newline at end of file
10.1 A palavra-chave struct
struct rotulof
tipo campo1;
...
tipo campoN;
g [inst^ancia];
A palavra-chave struct é usada para declarar estruturas em C. Ela identifica o início de uma definição
de estrutura e é sempre seguida por um rótulo, que 'e o nome atribuído `a estrutura. A seguir v^em os
membros da estrutura, delimitados entre chaves. Uma inst^ancia, que é uma declaração de uma variável
do tipo da estrutura, também pode ser incluída na definição.
10.2 Definindo e declarando
êxistem basicamente duas maneiras de definir e declarar estruturas em C:
ffl A primeira é colocar uma lista com um ou mais nomes de variáveis imediatamente após a definição
da estrutura, conforme o exemplo a seguir:
struct coord f /* definicao de uma estrutura */
int x;
int y;
g primeira, segunda; /* declaracao de variaveis */
êstas instruções definem o tipo de estrutura coord e declaram duas estruturas (variáveis) deste
tipo, chamadas primeira e segunda.
ffl A segunda maneira é declarar variáveis da estrutura em algum outro ponto do código-fonte. Por
êxemplo:
struct coord f /* definicao de uma estrutura */
int x;
int y;
g;
/* instrucoes adicionais aqui... */
37
38 CAP
'
ITULO 10. ESTRUTURAS
/* declaração de variaveis */
struct coord primeira, segunda;
10.2.1 Acessando os membros de uma estrutura
Os membros individuais de uma estrutura podem ser usados como qualquer outra variável respeitandose as características do seu tipo. Para acessar os membros de uma estrutura, utiliza-se o operador de
membro de estrutura '.' entre o nome da estrutura e o nome do membro.
êxemplo:
struct coord f
int x;
int y;
g primeira, segunda;
primeira.x = 50;
primeira.y = -30;
Uma das vantagens de se utilizar estruturas ao invés de variáveis individuais 'e a capacidade de copiar
informações entre estruturas do mesmo tipo através de uma única instru,cão de atribui,c~ao. Continuando
com o exemplo anterior, a instrução:
segunda = primeira;
é equivalente a:
segunda.x = primeira.x;
segunda.y = primeira.y;
êxemplo:
Recebe informações sobre as coordenadas dos cantos de um ret^angulo e calcula a sua área. Presume
que a coordenada y no canto superior esquerdo é maior que a coordenada y no canto inferior direito, que
a coordenada x do canto inferior direito é maior do que a coordenada x do canto superior esquerdo, e que