http://blocofontes.blogspot.com.br/
Convertido para PDF por: Daniel dos Santos
Kr is Ja m s a, Ph.D.
La r s Kl a n d e r
Tradução e Revisão Técnica
Jeremias René D. Pereira dos Santos Analista de Software
M AKRO N Books do Brasil Editora Ltda.
Rua Tabapuã, 1.348, Itaim-Bibi CEP 04533-004 — São Paulo — SP (011) 829-8604 e (011) 820-6622 makron@book.com.br
São Paulo • Rio de Janeiro • Ribeirão Preto • Belém • Belo H orizonte • Brasília • Campo Grande • Cuiabá • Curitiba • Florianópolis • Fortaleza
• Goiânia • M anaus • N atal • Porto Alegre • Recife • Salvador
Barcelona • Bogotá • Buenos Aires • Caracas • Ciudad dei México • Frankfurt • Guadalajara • Lisboa • Londres • Madrid • Montevideo
• New York • Paris • Porto • Santiago
Daniel dos Santos Pinheiro
http://blocofontes.blogspot.com.br/
Tamanho: 34,21MB Tipo: PDF
Do Original Jamsa’s C/C++ Programmer's Bible Copyright © 1998 by Jamsa Press
Copyright © 1999 MAKRON Books do Brasil Editora Ltda.
Todos os direitos para a língua portuguesa reservados pela MAKRON Books do Brasil Editora Ltda. Nenhuma parte desta publicação poderá ser reproduzida, guardada pelo sistema “retrieval” ou transmitida de qualquer modo ou por
qualquer outro meio, seja este eletrônico, mecânico, de fotocópia, de gravação, ou outros, sem prévia autorização, por escrito, da Editora.
EDITOR: MILTON MIRA DE ASSUMPÇÀO FILHO
Gerente de Produção Silas Camargo
Editora Assistente Eugênia Pessotti
Produtora Editorial Salete Del Guerra
Design de Capa Marianne Helm James Rehrauer
Editoração Eletrônica: ER J Informática Ltda.
Dados de Catalogação na Publicação
Programando em C/C+ + — A Bíblia; Kris Jamsa e Lars Klander traduçáo: e revisão técnica: Jeremias René D. Pereira dos Santos
São Paulo: MAKRON Books, 1999.
Título original: Jamsa’s C/C+ + Programmer’s Bible ISBN: 85.346.1025-8
S
u m á r ioIn t r o d u ç ã o à Li n g u a g e m C
U m a Introdução à P ro g ram açã o ... 1
Criando um A rquivo-Fonte em A S C I I ...2
Com pilando Seu P ro g ra m a ... 3
Com preendendo os Erros de Sintaxe ...4
Estrutura de um Típico Programa em C ... 5
Acrescentando Com andos aos Seus P ro g ram as...6
Exibindo Saída em um a N ova L i n h a ...7
Considera as Letras Maiúsculas e Minúsculas D ife re n te s ...8
Com preendendo os Erros Lógicos ... 9
Com preendendo o Processo de Desenvolvimento de um P rogram a...10
Com preendendo os Tipos de Arquivo ... 11
Com preendendo M elhor o L in k e d ito r ... 12
Com preendendo os Arquivos de C a b e ç a lh o ... 13
Ajudando o Com pilador a Localizar os Arquivos de Cabeçalho . . . 14
Agilizando as C o m p ila ç õ e s...15
C om entando Seus P ro g ra m a s... 16
M elhorando a Legibilidade do Seu P ro g ram a...17
Prestando Atenção às Mensagens de Advertência do Com pilador . 18 Controlando as Advertências do C o m p ila d o r...19
Usando Com entários para Excluir Com andos do Programa ... 20
Com preendendo a Im portância dos N o m e s ... 21
Com preendendo o P o n to -e -V írg u la ...22
A presentando as V ariáveis... 23
A tribuindo um Valor a um a V ariáv el...24
Com preendendo os Tipos de V ariáveis... 25
Declarando Múltiplas Variáveis do Mesmo T i p o ... 26
Com entando Suas Variáveis na Declaração ... 27
A tribuindo Valores às Variáveis na D eclaração ... 28
Inicializando M últiplas Variáveis durante a Declaração ... 29
Usando N om es Representativos para as V ariáveis...30
Com preendendo as Palavras-chave de C ... 31
Com preendendo as Variáveis do T ipo int ... 32
Com preendendo as Variáveis do T ipo c h a r ... 33
Com preendendo as Variáveis do T ipo f l o a t ... 34
Com preendendo as Variáveis do T ipo double ... 35
A tribuindo Valores aos Valores em Ponto F l u t u a n t e ... 36
Com preendendo os Modificadores de T i p o ... 37
Com preendendo o M odificador de T ipo unsigned ... 38
Com preendendo o M odificador de T ip o l o n g ... 39
C om binando os Modificadores de T ip o unsigned e lo n g ... 40
T rabalhando com os Valores Grandes ... 41
Com preendendo o M odificador de T ipo re g iste r... . ... 42
Com preendendo o M odificador de T ipo s h o r t... 43
O m itindo in t das Declarações Modificadas ... 44
Com preendendo o M odificador de T ipo sig n e d ... 45
M últiplas Operações de A trib u iç ã o ... 46
A tribuindo o Valor de um T ipo de Variável a um T ipo D ife re n te ...47
Criando Seus Próprios T i p o s ... 48
Atribuindo um Valor Hexadecimal ou O c t a l ...49
Com preendendo o Extravasam ento... 50
Com preendendo a P recisão... 51
Atribuindo Apóstrofos e O utros Caracteres ... 52
Introdução ao C om ando p r in tf ... 53
Exibindo Valores do T ipo int Usando p r i n t f ...54
Im prim indo um Valor Inteiro O ctal ou H ex ad e cim a l...55
Exibindo Valores do T ipo unsigned int Usando p r i n t f ... 56
Exibindo Valores do T ipo long int Usando p r i n t f ... 57
Exibindo Valores do T ip o float Usando p r i n tf ... 58
Exibindo Valores do T ipo char Usando p r i n t f ...59
Exibindo Valores de Ponto Flutuante em um Formato E x p o n en cial...60
Exibindo Valores em Ponto F lu tu a n te ... 61
Exibindo uma String de Caracteres Usando p r i n t f ... 62
Exibindo um Endereço de Ponteiro Usando p rin tf ... 63
Precedendo um Valor com um Sinal de Adição ou de S u b tra ç ã o ... 64
Form atando um Valor Inteiro Usando p r i n t f ... 65
Saída de Inteiros Preenchida com Zeros ...66
Exibindo um Prefixo Antes dos Valores Octais ou H exadecim ais... 67
Form atando um Valor em Ponto Flutuante Usando p r in tf ... 68
Form atando a Saída E x p o n en cial... 69
Justificando à Esquerda a Saída de p r i n t f ... 70
C om binando os Especificadores de Form ato de p r i n t f ... 71
Q uebrando um a String de Caracteres em Duas L in h a s...72
Exibindo Strings do T ipo near e far ...73
Trabalhando com os Caracteres Escape de p r i n t f ...74
Determ inando o N úm ero de Caracteres Q ue p rin tf Exibiu ...75
Usando o Valor de Retorno de p r i n t f ... 76
Usando o C ontrolador de Dispositivo A N S I ... 77
Usando o C ontrolador ANSI para Limpar Sua T e l a ... 78
Usando o C ontrolador ANSI para Exibir as Cores da T e la ... 79
Usando o C ontrolador ANSI para Posicionar o Cursor ...80
Executando Operações Matemáticas Básicas em C ... 81
Com preendendo a Aritmética do M ó d u lo ...82
Com preendendo a Precedência e a Associatividade dos O p erad o res... 83
Forçando a O rdem de Avaliação dos O peradores ...84
Com preendendo o O perador de Incremento de C ...85
Com preendendo o O perador de Decremento de C ... 86
Com preendendo um a Operação O U Bit a B i t ... 87
Com preendendo um a O peração E Bit a B i t ... 88
Com preendendo um a Operação O U Exclusivo Bit a B i t ... 89
Com preendendo a O peração Inverso Bit a B i t ... 90
Aplicando um a Operação ao Valor de um a V ariáv el...91
Com preendendo o O perador Condicional de C ... 92
Com preendendo o O perador sizeof de C ... 93
Efetuando um Deslocamento Bit a Bit ... 94
Efetuando um a Rotação Bit a B i t ... 95
Com preendendo os Operadores C o n d icio n ais...96
Com preendendo o Processamento Iterativ o ... 97
Com preendendo C om o C Representa Verdadeiro e Falso ...98
T estando um a Condição com i f ... 99
Com preendendo os Com andos Simples e C o m p o sto s... 100
Testando a Ig u ald ad e... 101
Efetuando Testes R elacionais... 102
Executando um a Operação Lógica E para Testar Duas Condições ...103
Executando um a Operação Lógica O U para Testar Duas Condições ... 104
Executando um a Operação Lógica N Ã O ( N O T ) ... 105
A tribuindo o Resultado de um a Condição ... 106
D eclarando Variáveis D entro de Com andos C o m p o sto s...107
Usando Recuos para M elhorar a L e g ib ilid a d e ...108
Usando a Verificação Estendida de Ctrl+Break ... 109
T estando Valores de Ponto F lu tu a n te ... 110
Laço de Repetição Infinito ...111
T estando um a A trib u iç ão ... 112
Cuidado com os Comandos if-if-else... 113
Executando Com andos um Núm ero Específico de V e z e s ... 114
Partes do C om ando for São O p c io n a is ... 115
Decrem entando os Valores em um C om ando f o r ...116
Controlando o Incremento do Laço f o r ... ... 117
Usando Laços for com Valores char e f l o a t ... 118
V
VI Program and o e m C/C++ — A Bíb l ia
Com preendendo u m Laço N ull ... 119
C om preendendo o Laço Infinito ...120
U sando o O perador Vírgula de C D entro de um Laço f o r ... 121
Evite M odificar o Valor de um a Variável de Controle em um Laço f o r ... ' ...122
Repetindo um ou Mais Com andos Usando um Laço w h ile ... 123
Com preendendo as Partes de um Laço w h ile ... 124
Repetindo um ou Mais Com andos Usando do ...125
Com preendendo o Com ando continue de C ... 126
Finalizando um Laço U sando o C om ando break de C ... 127
Desvios com o C om ando g o t o ...128
Testando M últiplas C o n d iç õ e s ...129
Com preendendo break D entro de s w itc h ... 130
Usando o Case default do Com ando sw itc h ...131
Definindo Constantes no Seu P ro g ram a... 132
Com preendendo a Expansão de Macros e de C o n sta n te s...133
N om eando as Constantes e as M a c r o s ... 134
Usando a Constante de Pré-processador _ F I L E _ ...135
Usando a C onstante de Pré-processador__LIN E.... ...136
Alterando a Contagem de Linha do P ré -p ro cessad o r...137
G erando um Erro Incondicional do P ré-p ro cessad o r...138
O utras Constantes do P ré-processador...139
Registrando a D ata e a H ora do Pré-processador...140
Testando a Adesão ao Padrão A N S I ... 141
Testando C++ versus C ... 142
Anulando a Definição de um a M acro ou C o n s t a n t e ...143
Com parando Macros e F u n ç õ e s ... 144
Com preendendo Pragmas do C o m p ila d o r ... 145
A prendendo sobre os Valores e Macros P re d efin id o s...146
Criando Seus Próprios Arquivos de C ab eçalh o ... 147
Usando #include <nomearq.h> ou #include "n o m e a rq .h " ... 148
Testando Se um Símbolo Está D e fin id o ... 149
Efetuando o Processamento if-else ...150
Efetuando um Teste de Condição de Pré-processador Mais P o d e ro so ... 151
Realizando Processamento if-else e e ls e -if... 152
Definindo Macros e Constantes Q ue Requerem M últiplas L in h a s ... 153
Criando Suas Próprias M a c r o s ...154
N ão Coloque Ponto-e-Vírgula nas Definições de M acros ... 155
C riando Macros M in e M a x ... 156
C riando Macros Q U A D R A D O e C U B O ... 157
C uidado com os Espaços nas Definições das M a c ro s ...158
Com preendendo Com o Usar os Parênteses ...159
As Macros N ão Têm T i p o ... 160
Co m p r e e n d e n d oa s St r i n g s Visualizando um a String de C ...161
C om o o Com pilador Representa um a String de C a ra c te re s... 162
C om o C Armazena as Strings de C aracteres...163
A prendendo Com o ‘A’ Difere de “A” ... 164
Representando um Apóstrofo D entro de um a Constante de S t r i n g ... 165
D eterm inando o Tam anho de um a S t r i n g ... 166
Usando a Função strlen ... 167
Copiando os Caracteres de um a String em O utra S tr in g ...168
Anexando o C onteúdo de um a String em O u t r a ...169
Anexando n Caracteres em um a S trin g ...170
Transform ando um a String em O u t r a ... 171
N ão Ultrapasse o Tam anho de um a String ...172
D eterm inando Se Duas Strings São ou N ão Iguais ...173
Ignorando a Caixa ao D eterm inar Se as Strings São I g u a i s ... 174
Convertendo um a String de Caracteres para Maiúsculas ou Minúsculas ... 175
O btendo a Primeira O corrência de u m Caractere em um a String ...176
R etornando um índice à Primeira Ocorrência de um a String . . . 177
E ncontrando a U ltim a O corrência de um Caractere em um a String ... 178
Retornando um índice à Ú ltim a O corrência de um a S trin g ... 179
Trabalhando com Strings do T ipo f a r ...180
Escrevendo Funções String para as Strings f a r ... 181
Contando o N úm ero de Ocorrências de um Caractere em uma S trin g ... 182
Invertendo o C onteúdo de um a S t r i n g ... 183
A tribuindo um Caractere Específico a um a String I n te ira ...184
Com parando Duas Strings de Caracteres ...185
Com parando os Primeiros n Caracteres de Duas Strings ...186
Com parando Strings sem Considerar a C a ix a ... 187
Convertendo a Representação em String de Caracteres de um N ú m e r o ...188
Duplicando o C onteúdo de uma String ...189
Encontrando um Caractere da Primeira Ocorrência de um D eterm inado C o n ju n to ... 190
Localizando um a Substring D entro de um a S t r i n g ...191
C ontando o N úm ero de Ocorrências da S u b strin g ...192
O btendo um índice para um a S u b strin g ...193
O btendo a Ocorrência Mais à Direita de uma S u b s tr in g ... 194
Exibindo um a String sem o Específicador de Form ato % s ...195
Removendo um a Substring de D entro de um a String ... 196
Substituindo um a Substring por O u t r a ... 197
Convertendo um a Representação Num érica A S C II...198
D eterm inando Se um Caractere É Alfanumérico ... 199
D eterm inando Se um Caractere É um a L e t r a ... 200
D eterm inando Se um Caractere C ontém um Valor A S C II... 201
D eterm inando Se um Caractere É um Caractere de Controle . . . 202
D eterm inando Se um Caractere É um D íg ito ... 203
D eterm inando Se um Caractere É u m Caractere G r á fic o ... 204
D eterm inando Se um Caractere É Maiúsculo ou M inúsculo . . . . 205
D eterm inando Se um Caractere É Imprimível ... 206
D eterm inando Se um Caractere É um Sinal de P o n tu ação ...207
D eterm inando Se um Caractere C ontém Espaço em Branco . . . . 208
D eterm inando Se um Caractere É um Valor H exadecim al...209
Convertendo um Caractere para M aiú scu la... 210
Convertendo um Caractere para Minúsculo ... 211
Trabalhando com Caracteres ASCII ...212
Escrevendo Saída Formatada em um a Variável S trin g ... 213
Lendo a Entrada de um a String de Caracteres ... 214
"Tokenizando" as Strings para Poupar Espaço ... 215
Inicializando um a S t r i n g ... 216
Fu n ç õ e s Com preendendo as Funções ... 217
Usando Variáveis D entro das Funções ... 218
Com preendendo main C om o um a F u n ç ã o ... 219
Introdução aos P arâm etro s... 220
Usando Parâmetros M ú ltip lo s ...221
Com preendendo as Declarações de Parâmetros em Programas C Mais A n tig o s ...222
Retornando um Valor de um a Função ... 223
Com preendendo o C om ando r e t u r n ...224
Com preendendo os Protótipos de F u n ç ã o ...225
Com preendendo a Biblioteca de Execução ... 226
Com preendendo os Parâmetros Formais e R e a is ... 227
Solucionando os Conflitos nos N o m e s ... 228
Funções Q ue N ão Retornam i n t ... 229
Com preendendo as Variáveis Locais ...230
Com o as Funções Usam a Pilha ...231
Com preendendo a Sobrecarga da F u n ç ã o ...232
Com preendendo O nde C Coloca as Variáveis L o c a is ... 233
D eclarando Variáveis Globais ... 234
Evite Usar Variáveis G lo b a is ...235
Solucionando os Conflitos de Nomes de Variáveis Locais e G lo b a is... 236
D efinindo M elhor o Escopo de um a Variável G lo b a l ...237
Com preendendo a C ham ada por V a lo r ... 238
Evitando a Alteração no Valor do Parâmetro com a Chamada por V a l o r ...239
Com preendendo a Chamada por R eferên cia... 240
Sumário VII
O btendo um E n d e re ç o ... 241
Usando um Endereço de M e m ó ria ...242
Alterando o Valor de um P arâm etro ... 243
Alterando Somente Parâmetros Específicos...244
A Chamada por Referência Ainda Usa a P ilh a ... 245
Introduzindo as Variáveis de Funções que L e m b ra m ...246
Com preendendo Com o C Inicializa Variáveis E státicas... 247
Usando a Seqüência de C ham ada Pascal ... 248
Com preendendo o Efeito da Palavra-Chave P a sc a l... 249
Escrevendo um Exemplo de Linguagem M is ta ... 250
Com preendendo a Palavra-Chave cdecl ...251
Com preendendo a R e c u rsã o ... 252
Com preendendo a Função Recursiva F ato ria l... 253
Programando O u tro Exemplo Recursivo ... 254
Exibindo Valores para Com preender M elhor a R e cu rsão ...255
Com preendendo a Recursão D ireta e I n d i r e t a ... 256
D ecidindo Usar ou N ão a R e c u rsã o ...' . . 257
Com preendendo Por Q ue as Funções Recursivas São Lentas . . . . 258
Com preendendo Com o Remover a R e cu rsão ... 259
Passando Strings para as F u n ç õ e s ... 260
Passando Elementos Específicos da M a t r i z ... 261
Com preendendo const em Parâmetros F o rm a is ...262
Usar const N ão Impede a Modificação do Parâmetro ... 263
Com preendendo as Declarações de Strings Não-Lim itadas ... 264
Usando Ponteiros versus Declarações de S trin g ... 265
C om o C Usa a Pilha para os Parâmetros S trin g ...266
Com preendendo as Variáveis E x te rn a s ...267
Colocando extern em Uso ... 268
Com preendendo a Variável Estática Externa ... 269
Com preendendo a Palavra-chave volatile ... 270
Com preendendo a Estrutura de C ham ada e o Ponteiro de B a se ...271
C ham ando um a Função em Linguagem A ssem bly... 272
Retornando um Valor a partir de um a Função em Linguagem A ssem bly... 273
Introduzindo Funções Q ue N ão Retornam V a lo re s... 274
Com preendendo as Funções Q ue N ão Usam Parâmetros ...275
Com preendendo a Palavra-chave auto ... 276
Com preendendo o E s c o p o ... 277
Com preendendo as Categorias de Escopo de C ...278
Com preendendo o Espaço do Nom e e os Identificadores ... 279
Com preendendo a Visibilidade do Identificador ... 280
Com preendendo a Duração ... 281
Funções Q ue Suportam um N úm ero Variável de Parâmetros . . . 282
Suportando um N úm ero Variável de P a râ m e tro s... 283
C om o va_start, va_arg e va_end Funcionam ... 284
Criando Funções Q ue Suportam M uitos Parâmetros e Tipos . . . 285
Op e r a ç õ e s d e Te c l a d o Lendo um Caractere do Teclado ... 286
Exibindo um Caractere de S a íd a ... 287
Com preendendo a Entrada Bufferizada ... 288
A tribuindo E ntrada do Teclado a um a String ... 289
C om binando getchar e putchar ... 290
Lembre-se, getchar e putchar São M a cro s... 291
Lendo um Caractere Usando E/S D ireta ... 292
Entrada D ireta no Teclado sem a Exibição do C a ra c te re ...293
Sabendo Q uando Usar ‘\r* e ‘\n ’ ...294
Executando Saída D ir e ta ...295
Colando um a Tecla Digitada de Volta no Buffer do Teclado . . . 296
Saída Formatada Rápida Usando c p r i n t f ... 297
Entrada Rápida Formatada a partir do T e c la d o ...298
Escrevendo um a String de C a racteres...299
Escrita Mais Rápida de String Usando E/S D ir e ta ... 300
Lendo um a String de Caracteres do T e c l a d o ... 301
Executando Entrada de String Mais Rápida peJo T e c la d o ... .. 302
Exibindo Saída em C o r e s ... 303
Limpando a Tela do V íd e o ... 304
Apagando até o Final da Linha A tu a l... 305
Apagando a Linha Atual da Tela ... 306
Posicionando o Cursor para Saída na Tela ... 307
Determ inando a Posição de Linha e de Coluna ... 308
Inserindo um a Linha em Branco na T e l a ...309
Copiando Texto da Tela para um Buffer ...310
Escrevendo um Buffer de Texto em um a Posição Específica da T e l a ... 311
D eterm inando as Definições do M odo T e x t o ...312
C ontrolando as Cores da T e l a ...313
Atribuindo Cores de F u n d o ... 314
Definindo a C or de Frente Usando T e x tC o lo r...315
Definindo a C or de Fundo Usando textbackground... 316
C ontrolando a Intensidade do T e x to ...317
Determ inando o M odo Atual do Texto ... 318
M ovendo Texto da Tela de um Local para O utro ...319
D efinindo um a Janela de T e x to ... 320
Usando o Valor Absoluto de um a Expressão I n te ir a ... 321
Usando o Arco C o -se n o ... 322
Usando o Arco Seno ... 323
Usando o Arco T a n g e n te ...324
O btendo o Valor Absoluto de um N úm ero C o m p le x o ...325
Arredondando para Cim a um Valor em Ponto F lu tu a n te ... 326
Usando o Co-seno de um  n g u lo ... 327
Usando o Co-seno Hiperbólico de um  n g u lo ... 328
Usando o Seno de um Ângulo ... 329
Usando o Seno Hiperbólico de um Ângulo ... 330
Usando a Tangente de um  n g u l o ... 331
Usando a Tangente Hiperbólica de um Ângulo ... 332
Realizando a Divisão Inteira ... 333
Trabalhando com Exponencial ... 334
Usando o Valor Absoluto de um a Expressão em Ponto F lu tu a n te ... 335
Usando o Resto em Ponto F lu tu an te... 336
Usando a Mantissa e o Expoente de um Valor em Ponto F lu tu a n te ... 337
Calculando o Resultado de x * 2 e ...338
Calculando o Logaritmo N a tu r a l... 339
Calculando o Resultado de log lO x ...340
Determ inando os Valores Máximo e M ín im o ...341
Quebrando um Double em Seus C om ponentes Inteiro e Real . . . 342
Calculando o Resultado de xn ...343
Calculando o Resultado de 10 * ... 344
Gerando um N úm ero A leatório...345
Mapeando Valores Aleatórios para um Intervalo Específico ... 346
Inicializando o Gerador de N úm eros Aleatórios ...347
Calculando a Raiz Q uadrada de um Valor ...348
Criando um a Rotina de Tratam ento de Erro M atemático ...349
Arquivos, Diretóriose Discos D eterm inando a Unidade de Disco A t u a l ...350
Selecionando a Unidade A tu a l... 351
D eterm inando o Espaço Disponível no D isc o ...352
Cuidado com o d b ls p a c e ...353
Lendo as Informações de um a Tabela de Alocação de A rquivos...354
Com preendendo a Identificação do D is c o ... 355
Efetuando um a Leitura ou Gravação Absoluta de Setor ...356
Efetuando E/S no Disco Baseada no B I O S ...357
Testando a Prontidão de um a Unidade de D isquete...358
Abrindo um Arquivo Usando fopen ... 359
Com preendendo a Estrutura F IL E ...360
Fechando um Arquivo A b e r to ... 361
Lendo e Gravando Informações no Arquivo um Caractere de Cada V e z ... 362
Com preendendo o Ponteiro de Posição do Ponteiro de Arquivo ... 363
Determ inando a Posição Atual no A rq u iv o ... 364
Com preendendo os Canais de Arquivos ... 365
Com preendendo as Traduções de A rquivos... 366
Com preendendo a Linha FILES=valor no C onfig.Sys... 367
Usando E/S em Arquivos de Baixo Nível e de Alto Nível ...368
VIII Program and oem C/C++ — A Bíb l ia
Com preendendo os Indicativos de A rquivos...369
Com preendendo a Tabela de Arquivos do P ro c esso... 370
Visualizando as Entradas da Tabela de Arquivos do Processo . . . 371
C om preendendo a Tabela de Arquivos do Sistema ... 372
Exibindo a Tabela do Sistema de Arquivos ...373
Derivando Indicativos de Arquivos a partir de Ponteiros Stream (de Canais) ... 374
Executando Saída Form atada em Arquivo ... 375
Renomeando um A rq u iv o ...376
Excluindo um A r q u iv o ... 377
Determ inando Com o um Programa Pode Acessar um A rq u iv o ...378
Definindo o M odo de Acesso de um A r q u iv o ... 379
G anhando M elhor C ontrole dos Atributos do A r q u iv o ... 380
Testando o Erro no Canal de um A rq u iv o ...381
D eterm inando o T am anho de um A r q u iv o ...382
Esvaziando um Canal de E/S ...383
Fechando Todos os Arquivos Abertos de um a Só V e z ... 384
O btendo o Indicativo de Arquivo de um Canal de Arquivo . . . . 385
Criando um N om e de Arquivo Tem porário Usando P _tm pdir . . 386
Criando um N om e de Arquivo Tem porário U sando T M P ou T E M P ... 387
Criando um Arquivo Verdadeiramente T e m p o rá rio ... 388
Removendo Arquivos T em p o rário s...389
Pesquisando o Cam inho de Com andos para um Arquivo ... 390
Pesquisando um Arquivo na Lista de Subdiretório de um Item do A m b ie n te ... 391
Abrindo Arquivos no Diretório T E M P ...392
M inim izando as Operações de E/S em A rq u iv o ...393
Escrevendo Código Q ue Usa Barras Invertidas nos Nom es de D ire tó rio ... 394
Modificando o D iretório A tu a l...395
Criando um D iretó rio ... 396
Removendo um D ire tó rio ...397
Removendo um a Árvore de D iretório ...398
Construindo o N om e de Cam inho C o m p le to ... 399
Subdividindo um Cam inho de D ir e tó r io ... 400
Construindo um N om e de C a m in h o ... 401
Abrindo e Fechando um Arquivo Usando Funções de Baixo N ív e l... 402
Criando um Arquivo ...403
Efetuando Operações de Leitura e Gravação de Baixo Nível . . . . 404
Testando o Final de um A r q u iv o ...405
Colocando as Rotinas de Arquivo de Baixo Nível para T rab alh ar... 406
Especificando o M odo para um a Tradução Arquivo-Indicativo . . 407
Posicionando o Ponteiro de Arquivo Usando lseek ...408
A brindo Mais de 20 Arquivos ... ... .... 409
Usando serviços de arquivo baseados no D O S ... 410
O btendo a Data e a H o ra de Criação de um A rq u iv o ... 411
O btendo a D ata e a H ora de um Arquivo Usando Campos de B i t ... 412
D efinindo a D ata e a H ora de um A rq u iv o ... 413
D efinindo a D ata e a H ora de um Arquivo com a Data e a H ora A tu a is... 414
Lendo e G ravando Dados um a Palavra de Cada V e z ... 415
Alterando o T am anho de um A r q u iv o ... 416
Controlando as Operações de Leitura e Gravação em Arquivos A b ertos... 417
A tribuindo um Buffer de Arquivo ... 418
Alocando um Buffer de A rq u iv o ...419
Criando um N om e de Arquivo Exclusivo Usando m k te m p ... 420
Lendo e Gravando E stru tu ra s ...421
Lendo Dados de um a Estrutura a partir de um Canal de A rq u iv o ...422
D uplicando o Indicativo de um A r q u iv o ... 423
Forçando a Definição de um Indicativo de Arquivo ...424
Associando o Indicativo de um Arquivo com um Canal ... 425
C om preendendo o Com partilham ento de Arquivo ... 426
Abrindo um Arquivo para o Acesso C o m p artilh ad o ... 427
Bloqueando o C onteúdo de um Arquivo ...428
G anhando C ontrole Mais Refinado do Bloqueio de Arquivo . . . . 429
Trabalhando com Diretórios do D O S ...430
Abrindo um D ir e tó rio ...431
Lendo um a E ntrada do D iretório ...432
Usando Serviços de Diretório para Ler C:\W indow s ... 433
V oltando para o Início de um D ir e tó rio ... 434
Lendo Recursivamente os Arquivos de um Disco ...435
D eterm inando a Posição Atual no A rq u iv o ...436
A brindo um Canal de Arquivo C om p artilh ad o ...437
Criando um Arquivo Exclusivo em um Diretório Específico . . . . 438
Criando um Novo A rq u iv o ...439
U sando os Serviços do D O S para Acessar um Arquivo ...440
Forçando a Abertura de um Arquivo no M odo Binário ou T e x t o ...441
Lendo Linhas de T e x t o ...442
Gravando Linhas de Texto ...443
Colocando fgets e fputs em Uso ...444
Forçando a Tradução de Arquivo B in á rio ...445
Com preendendo Por Q ue o Programa copiatxt N ão Pode Copiar Arquivos B in ário s... 446
Testando o Final do Arquivo ... 447
Devolvendo um C a ra c te re ...448
Lendo Dados Formatados de A rq u iv o ...449
Posicionamento do Ponteiro de Arquivo com Base em Sua Posição Atual ... 450
O btendo Informações do Indicativo de A rq u iv o ... 451
Reabrindo um Canal de A rq u iv o ...452
Ma t r i z e s, Po n t e i r o se Es t r u t u r a s Com preendendo as M a triz e s ...453
Declarando um a M a triz ...454
Visualizando um a M a triz ... 455
Com preendendo os Requisitos de Armazenamento de uma Matriz ... 456
Inicializando um a M a triz ... 457
Acessando Elementos da M atriz ... 458
Percorrendo em um Laço os Elementos da M a t r i z ... 459
Usando Constantes para Definir as M a triz e s...460
Passando uma M atriz a um a F u n ç ã o ... 461
Revisitando as Matrizes Com o Funções ...462
Com preendendo C om o as Matrizes de String D ifere m ...463
Passando Matrizes para a Pilha ...464
D eterm inando Q uantos Elementos um a Matriz Pode A rm a z e n a r... 465
Usando o Modelo de M em ória Huge para as Matrizes G r a n d e s ...466
A Barganha entre Matrizes e Memória D in â m ic a ...467
Com preendendo as Matrizes M ultidim ensionais...468
Com preendendo as Linhas e C o lu n a s ... 469
Acessando Elementos em um a Matriz B id im en sio n al...470
Inicializando Elementos em um a Matriz B id im en sio n al... 471
D eterm inando o C onsum o de M em ória de um a Matriz M ultidim ensional... 472
Percorrendo em um Laço um a M atriz B idim ensional...473
Percorrendo um a Matriz T ridim ensional... 474
Inicializando Matrizes M u ltid im e n sio n a is... 475
Passando uma Matriz Bidimensional para um a Função ... 476
Tratando as Matrizes M ultidim ensionais Com o um a Dimensão . 477 Com preendendo Com o C Armazena Matrizes M u ltid im en sio n a is... 478
Com preendendo a O rdem Linha por Linha versus Coluna por C o l u n a ... 479
Matrizes de Estruturas de Matrizes ... 480
Com preendendo as Uniões ... 481
Economizando M em ória com as U n iõ e s ... 482
Usando REGS - U m a União C lá ssic a ...483
Colocando a União REGS em U s o ... 484
Com preendendo as Estruturas de Campos de B i t ... 485
Visualizando um a Estrutura de Campos de B i t ... 486
Sum ário IX
Com preendendo o Intervalo de Valores de um a Estrutura
Bit a Bit ... 487
Procurando um Valor Específico em um a M atriz ... 488
C om preendendo um a Pesquisa B in ária... 489
Usando um a Pesquisa B in ária...490
Classificando um a M a t r i z ...491
Com preendendo o M étodo da B o lh a ... 492
Colocando o Algoritmo da Bolha em U s o ...493
Com preendendo o Algoritmo da S e le ç ã o ... 494
Colocando em Uso o M étodo da S eleção... 495
Com preendendo o Algoritmo Shell ... 496
Colocando em Uso o Algoritmo Shell ... 497
Com preendendo o Q uick S o r t ...498
Colocando o Q uick Sort em U s o ... 499
Problemas com as Soluções de Classificação A n te rio re s ... 500
Classificando um a Matriz de Strings de Caracteres ... 501
Pesquisando um a Matriz com lfind ... 502
Procurando Valores com lse a rc h ... 503
Pesquisando uma Matriz Classificada com bsearch... 504
Classificando Matrizes com q s o r t ... 505
D eterm inando o N úm ero de Elementos na M atriz ...506
Com preendendo Ponteiros como Endereços ... 507
D eterm inando o Endereço de um a V ariáv el...508
Com preendendo como C T rata Matrizes como P o n te iro s...509
Aplicando o O perador de Endereço (&) a um a M a t r i z ... 510
Declarando Variáveis Ponteiro ...511
Desreferenciando um P o n te ir o ...512
Usando Valores de P o n te ir o ... 513
Usando Ponteiros com Parâmetros de F u n ç ã o ... 514
Com preendendo a Aritmética de Ponteiros ...515
Increm entando e D ecrem entando um P o n te ir o ...516
C om binando um a Referência e Increm ento de P o n te ir o ...517
Percorrendo um a String Usando um P o n te ir o ... 518
Usando Funções Q ue Retornam P o n teiro s... 519
Criando um a Função Q ue Retorna um P o n te iro ...520
Com preendendo um a Matriz de P o n te iro s...521
Visualizando um a M atriz de Strings de C aracteres... 522
Percorrendo em um Laço um a M atriz de Strings de C a ra c te re s... 523
T ratando um a M atriz de String de Caracteres C om o um Ponteiro ... 524
Usando um Ponteiro para um Ponteiro para Strings de C a ra c te re s... 525
Declarando um a Constante String Usando um P o n te ir o ...526
Com preendendo o Ponteiro do T ipo v o i d ...527
Criando Ponteiros para as F u n ç õ e s...528
Usando um Ponteiro para um a F u n ç ã o ... 529
Usando um Ponteiro para um Ponteiro para um Ponteiro ... 530
Com preendendo as Estruturas ...531
U m a Estrutura É um Gabarito para a Declaração de Variáveis . . 532
O Descritor de um a Estrutura È o N om e da E s tr u tu r a ... 533
Declarando um a Variável Estrutura de M odos D ife re n te s... 534
Com preendendo os M em bros da Estrutura ...535
Visualizando um a Estrutura ... 536
Pondo um a Estrutura em Uso ... 537
Passando um a Estrutura a um a Função ...538
Alterando um a Estrutura D entro de um a Função ... 539
Com preendendo a Indireção (* p o n te iro ).m e m b ro ... 540
Usando o Form ato ponteiro->m em bro ... 541
Usando um a Estrutura sem N o m e ...542
C om preendendo o Escopo de Definição de um a E s tr u tu r a ... 543
Inicializando uma Estrutura ...544
Efetuando E/S em E s tr u tu r a s ...545
Usando um a Estrutura D entro de O u t r a ...546
Estruturas Q ue C ontêm M a triz e s ... 547
Criando um a M atriz de E stru tu ra s ...548
Se r v i ç o s D O S e B IO S Com preendendo os Serviços do Sistema do D O S ... 549
Com preendendo os Serviços da BIOS ... 550
Com preendendo os Registradores ...551
Com preendendo o Registrador de Flags ...552
Com preendendo as Interrupções de S o ftw a re ...553
Usando a BIOS para Acessar a Impressora ... 554
Informação de C trl+ B re a k ...555
Com preendendo Possíveis Efeitos Colaterais do D O S ... 556
Suspendendo um Programa T e m p o ra ria m e n te ... 557
Divertindo-se com S o m ... 558
O btendo Informações Específicas do P a í s ...559
Com preendendo o Endereço de Transferência do Disco ... 560
Acessando e Controlando a Área de Transferência do Disco . . . . 561
Usando os Serviços de Teclado da B I O S ... 562
O btendo a Lista de Equipamentos da B I O S ...563
C ontrolando a E/S da Porta S erial...564
Acessando os Serviços do D O S Usando b d o s ... 565
O btendo Informações Estendidas de Erro do D O S ... 566
D eterm inando a Q uantidade de M em ória Convencional da B I O S ... 567
Construindo um Ponteiro far ...568
Dividindo um Endereço far em um Segmento e Deslocamento . . 569
D eterm inando a M emória do Núcleo Livre ... 570
Lendo as Configurações do Registrador de S e g m e n to ... 571
Ge r e n c i a m e n t o d e Me m ó r i a Com preendendo os Tipos de M e m ó ria ... 572
Com preendendo a M em ória C o n v e n cio n al... 573
Com preendendo o Layout da M emória C o n v e n c io n a l...574
Acessando a Memória C o n v e n cio n al... 575
Com preendendo Por Q ue o PC e o D O S Estão Restritos a 1 M b ... 576
Produzindo um Endereço a partir de Segmentos e D eslocam entos...577
Com preendendo a M emória Expandida ... 578
Usando a Memória Expandida ... 579
Com preendendo a Memória E ste n d id a ...580
Com preendendo os Modos Real e P rotegido...581
Acessando a Memória E s te n d id a ...582
Com preendendo a Área de M emória A l t a ... 583
Com preendendo a Pilha ... 584
Com preendendo Diferentes Configurações da P i l h a ... 585
Determ inando o Tam anho da Pilha Atual do Seu Programa . . . . 586
Controlando o Espaço na Pilha com _ stk le n ...587
Atribuindo um Valor a um Intervalo de Memória ... 588
Copiando um Intervalo de M emória para O u tro ...589
Copiando um Intervalo de M emória até um Byte Específico . . . . 590
Com parando Duas Matrizes de unsigned char ... 591
Perm utando Bytes de Strings de Caracteres A djacentes... 592
Alocando M em ória D in â m ic a ...593
Revisitando a Conversão ...594
Liberando a M em ória Q uando Ela N ão É Mais N ec e ssá ria ...595
Alocando M em ória Usando a Função c a llo c ... 596
Com preendendo o H e a p ... 597
Contornando o Limite de 64Kb para o H e a p ... 598
Alocando M em ória a partir da P i l h a ... 599
Alocando Dados H u g e ...600
Alterando o T am anho de um Bloco Alocado ... 601
Com preendendo b r k ... 602
Validando o H e a p ... 603
Efetuando um a Verificação Rápida do H e a p ... 604
Preenchendo o Espaço Livre do H e a p ...605
Verificando um a Entrada Específica no H e a p ... 606
Percorrendo as Entradas do H e a p ... 607
Examinando o C onteúdo de uma Posição de Memória E specífica...608
Colocando Valores na M emória ...609
Com preendendo as Portas do P C ... 610
Acessando os Valores das Portas ... 611
Com preendendo a C M O S ... 612
Com preendendo os Modelos de M e m ó ria ...613
Com preendendo o M odelo de M em ória T iny ... 614
X Pro g ram a n d oe m C/C++ — A Bíb l ia
C om preendendo o M odelo de M emória Small ...615
C om preendendo o Modelo de M emória M e d iu m ... 616
Com preendendo o Modelo de Memória C o m p a c t... 617
Com preendendo o Modelo de M emória L arge... 618
Com preendendo o Modelo de M emória H uge ...619
Determ inando o Modelo de Memória Atual ... 620
Da t ae h o r a Obtendo a Data e a Hora Atuais Como Segundos desde 1/1/1970 . . 621
Convertendo um a D ata e um a H ora de Segundos para ASCII ...622
Ajuste do H orário de Verão ...623
Retardando durante um D eterm inado N úm ero de M ilisseg u n d o s... 624
D eterm inando o T em po de Processamento do Seu Programa . . . 625
Com parando Dois H o r á rio s ... 626
O btendo um a String de D a t a ...627
O btendo um a String com o H o r á r i o ... 628
Lendo o Tem porizador da BIOS ... 629
Trabalhando com o H orário L o c a l...630
Trabalhando com o H orário de G re e n w ic h ...631
O btendo o H orário do Sistema D O S ... 632
O btendo a D ata do Sistema do D O S ... 633
Definindo o H orário do Sistema D O S ...634
Definindo a D ata do Sistema do D O S ... 635
Convertendo um a D ata do D O S para o Formato do U N IX . . . . 636
Usando timezone para Calcular a Diferença entre a Zona H o r á r i a ...637
D eterm inando a Z ona H orária A t u a l ... 638
Definindo Campos de Z ona H orária com t z s e t ...639
Usando a Variável de Ambiente T Z ... . 640
Definindo a Entrada de Ambiente T Z a partir de D entro de Seu P ro g r a m a ... 641
O btendo as Informações de Z ona H o r á ria ...642
Definindo a H ora do Sistema em Segundos desde a Meia-noite de 1/1/1970 ... 643
Convertendo um a D ata para Segundos desde a M eia-noite de 1/1/1970 ... 644
D eterm inando a D ata Juliana de um a D a t a ...645
Criando um a String Formatada de D ata e H o r a ...646
Com preendendo os Tipos de Relógio do P C ... 647
Re d i r e c i o n a n d o a E / S e Pr o c e s s a n d o Un h a sd e Co m a n d o Aguardando a Digitação de um a T e c la ...648
Pedindo um a Senha ao U s u á r io ... 649
Escrevendo Sua Própria Função de Senha ...650
Com preendendo o Redirecionamento da Saída ...651
Com preendendo o Redirecionamento da E n t r a d a ... 652
Com binando o Redirecionamento da E ntrada e da Saída ... 653
Usando stdout e s t d i n ... 654
Com preendendo o O perador de C analização... 655
Com preendendo getchar e p u tc h a r ...656
N um erando a Entrada R edirecionada... 657
G arantindo Q ue uma Mensagem Apareça na T e la ... 658
Escrevendo Seu Próprio Com ando more ... 659
Exibindo um C ontador de Linhas R ed irecio n ad as... 660
Exibindo um C ontador de Caracteres R e d irecio n ad o s... 661
Criando um C om ando M ore com Controle de T e m p o ... 662
Im pedindo o Redirecionamento da E / S ... 663
Usando o Indicativo de Arquivo s t d p r n ... 664
Desviando a Saída Redirecionada para um A rq u iv o ... 665
Usando o Indicativo de Arquivo s td a u x ... 666
Encontrando Ocorrências de Substring D entro da Entrada R e d irecio n ad a... 667
Exibindo as Primeiras n Linhas da E ntrada Redirecionada ... 668
Com preendendo os Argumentos da Linha de C o m a n d o ...669
Exibindo um C ontador de Argumentos da Linha de Com andos . 670 Exibindo a Linha de C om ando ... 671
T rabalhando com Argumentos da Linha de Com ando entre A s p a s ... 672
Exibindo o C onteúdo de um Arquivo a partir da Linha de C o m a n d o ... 673
Tratando argv Com o um Ponteiro ... 674
Com preendendo Com o C Sabe sobre a Linha de Com ando . . . . 675
Com preendendo o A m b ien te... 676
Tratando env C om o um Ponteiro ... 677
Use void para os Parâmetros de m a i n ...678
Trabalhando com N úm eros da Linha de C o m a n d o ...679
Com preendendo os Valores de Status da S a íd a ...680
Usando return para o Processamento do Status da S a í d a ... 681
D eterm inando Se m ain Deve ou N ão Ser Declarada Como void ...682
Pesquisando o Item Específico no A m b ie n te... 683
Com o o D O S T rata o Am biente ... 684
Usando a Variável Global e n v iro n ... 685
Acrescentando um Item ao Ambiente Atual ... 686
Acrescentando Elementos no Ambiente D O S ...687
A bortando o Programa A tu a l...688
Definindo Funções Q ue Executam ao Térm ino do Programa . . . 689
Com preendendo as Bibliotecas ... 690
Reutilizando o Código-O bjeto ... 691
Problemas com a Compilação de Arquivos C e OBJ ...692
Criando um Arquivo de B ib lio te c a ... 693
Com preendendo as Operações da Biblioteca C o m u m ... 694
Listando as Rotinas em um Arquivo de B ib lio te c a ... 695
Use Bibliotecas para Reduzir Seu T em po de C om p ilação... 696
Aprendendo Mais sobre as Capacidades da Sua B ib lio te c a ...697
Com preendendo o L in k e d ito r ... 698
Vendo as Capacidades do Linkeditor ...699
Usando um M apa do L in k e d ito r...700
Usando Arquivos de Resposta do L inkeditor...701
Simplificando a Criação de Aplicativos com o M A K E ...702
Criando um Arquivo Simples do MAKE ... 703
Usando M últiplos Arquivos de Dependência com o MAKE . . . . 704
C om entando Seus Arquivos do M A K E ...705
Linhas de C om ando e M A K E ... 706
Colocando Múltiplas Dependências em um Arquivo do M A K E ... 707
Regras Implícitas e Explícitas do M A K E ... 708
Usando Macros do MAKE ... 709
Macros Predefinidas do M A K E ... 710
Executando Processamento Condicional com o MAKE ...711
Testando um N om e de Macro ... 712
Incluindo um Segundo Arquivo do MAKE ... 713
Usando os Modificadores de M acro do MAKE ... 714
Finalizando, um Arquivo do MAKE com um E r r o ... 715
Desabilitando a Exibição do N om e do C o m a n d o ... 716
Usando o Arquivo BU ILTIN S.M A K ...717
Executando Processamento de Status de Saída no MAKE ... 718
C ham ando e A lterando um a M acro ao Mesmo T e m p o ... 719
Executando um C om ando MAKE para M últiplos Arquivos Dependentes ... 720
C Av a n ç a d o D eterm inando Se o Co-Processador Matemático Está Presente . . 721 Com preendendo as Macros ctype.h e i s t y p e ... 722
Controlando o Vídeo D i r e t o ...723
D etectando Erros Matemáticos e do Sistema ... 724
Exibindo Mensagens de Erro Predefinidas... 725
D eterm inando o N úm ero de Versão do Sistema Operacional . . . 726
Com preendendo a P o rta b ilid a d e ... 727
Efetuando um G oto Não-local ... 728
O btendo a Identificação do Processo... 729
Cham ando um Com ando Interno do D O S ...730
Usando a Variável Global _ p s p ...731
Usando o Modificador const nas Declarações de V ariáveis...732
Usando Tipos E n u m e ra d o s... 733
Colocando um T ipo Enumerado em U s o ... 734
Sumário XI
Com preendendo um Valor E n u m e ra d o ...735
Atribuindo um Valor Específico a um T ip o E n u m e ra d o ...736
Salvando e Restaurando os R e g istra d o re s... 737
Introdução às Listas Dinâm icas ... 738
Declarando uma Estrutura de Lista L ig ad a...739
Criando uma Lista L igada...740
Exemplo de um a Lista Ligada S im p le s...741
Com preendendo como Percorrer um a Lista L ig a d a ... 742
Criando um a Lista Mais Ú t i l ...743
Anexando um Elemento na L i s t a ... 744
Inserindo um Elemento na L ista... 745
Exibindo um D iretório C lassificado...746
Excluindo um Elemento de um a L is t a ...747
Usando um a Lista Duplam ente L igada... 748
Criando um a Lista D uplam ente Ligada Simples ...749
Com preendendo nod o -> an terio r-> p ró x im o ...750
Removendo um Elemento de um a Lista D uplam ente Ligada . . . 751
Inserindo um Elemento em um a Lista Duplam ente L ig a d a ... 752
C om preendendo os P ro cesso s-F ilh o ...753
Gerando um P ro c esso -F ilh o ... 754
Usando O utras Funções spawnlxx ...755
Usando as Funções sp a w n v x x ...756
Executando um P rocesso-F ilho... ...757
Usando O utras Funções ex eclx x ... 758
Usando as Funções execvxx ... 759
Com preendendo os Overlays ...760
Com preendendo as Interrupções... 761
As Interrupções do P C ... 762
Usando a Palavra-Chave interrupt ...763
D eterm inando o Vetor de um a In te rru p ç ã o ...764
Definindo um Vetor de In terru p ção ...765
H abilitando e Desabilitando as Interrupções ... 766
Criando um a Rotina Simples de T ratam ento de Interrupção . . . . 767
Encadeando um a Segunda In te rru p ç ã o ...768
Gerando um a In terru p ção ...769
Interceptando o Tem porizador do P C ...770
Com preendendo os Erros Críticos ...771
T ratam ento de Erro Crítico em C ...772
U m a R otina de Tratam ento de Erro C rítico C o m p le ta ... 773
Restaurando as Interrupções A lte ra d a s ...774
Criando um a Rotina de Tratam ento de C trl+ B reak ... 775
Usando os Serviços do D O S na Sua Rotina de Tratam ento de Erro C r í t i c o ... 776
A um entando o D esem penho com o Uso da Seleção do C onjunto de In stru çõ es... 777
Funções Intrínsecas I n - l i n e ... 778
Habilitando e Desabilitando as Funções In trín secas... 779
Com preendendo as Chamadas Rápidas de F u n ç õ e s ... ...780
Regras para a Passagem de Parâmetros _ f a s tc a ll...781
Com preendendo o Código Invariante ...782
Com preendendo a Supressão de Carga R e d u n d a n te ...783
Com preendendo a Compactação do Código ... 784
Com preendendo a Compactação do Laço ... 785
Com preendendo a Indução do Laço e a Redução da F o r ç a ... 786
Com preendendo a Eliminação de Subexpressão C o m u m ...787
Com preendendo as Conversões C om uns de C P a d rã o ... 788
Com preendendo os Q uatro Tipos Básicos de C ...789
Com preendendo os T ipos Fundam entais versus os Derivados . . . 790
Com preendendo os Inicializadores...791
Com preendendo o Sistema de Ligação (L in k ag e)...792
Com preendendo as Declarações Experimentais ...793
Contrastando Declarações e Definições ...794
Com preendendo lvalues ...795
Com preendendo rv a lu e s ...796
Usando Palavras-chave de Registradores de Segmento ...797
Use os Ponteiros far com C u id a d o ...798
Com preendendo os Ponteiros Normalizados ...799
Com andos do Co-Processador Matemático ... 800
Com preendendo cdecl e pascal nas V ariáv eis... 801
Im pedindo as Inclusões C irc u la re s ... 802
In t r o d u ç ã oà C + + Introduzindo C++ ... 803
C om o os Arquivos-Fonte de C++ São D if e re n te s ... 804
Iniciando com um Programa Simples em C + + ...805
Com preendendo o Canal de Enrrada/Sa/da c o u r ... 806
Escrevendo Valores e Variáveis com cout ... 807
C om binando Diferentes Tipos de Valores com c o u t ...808
Exibindo Valores Hexadecimais e O c ta is... 809
Redirecionando cout ...810
Se Você G osta de printf, Use p r i n t f ... 811
Escrevendo Saída em cerr ... 812
Recebendo Entrada com cin ... 813
cin N ão Usa P o n te iro s... 814
Com preendendo C om o cin Seleciona os Campos de D a d o s...815
Com preendendo C om o os Canais de E/S Conhecem os Tipos dos V alores...816
Efetuando Saída Usando clog ...817
cin, cout, cerr e clog São Ocorrências de C la s s e ... 818
Descarregando a Saída com flush ...819
Com preendendo o Q ue iostream.h C o n t é m ...820
C++ Requer Protótipos de F u n ç õ e s...821
C++ Acrescenta Novas Palavras-Chave ...822
C++ Suporta as Uniões A n ô n in ia s...823
Resolvendo o Escopo G lo b a l... 824
Fornecendo Valores Padrão de Parâmetros ... 825
Controlando a Largura da Saída de c o u t ...826
Usando setw para Definir a Largura para c o u t ... 827
Especificando um Caractere de Preenchimento em c o u t ...828
Justificando à D ireita e à Esquerda a Saída de cout ... 829
Controlando o N úm ero de Dígitos em Ponto Flutuante Exibidos por c o u t ...830
Exibindo Valores nos Formatos Fixo ou C ie n tífic o ...831
Restaurando cout para o Padrão ... 832
D efinindo a Base da E / S ...833
Declarando Variáveis O nde Você Precisa Delas ...834
Colocando Valores de Parâmetro Padrão em Protótipos de F u n ç ã o ...835
Usando Operadores Bit a Bit e c o u t ... 836
Com preendendo a Avaliação Preguiçosa (ou C urto- Circuito) . . . 837
Usando a Palavra-Chave const em C + + ...838
Usando a Palavra-Chave enum em C++ ... 839
Com preendendo o Espaço Livre ... 840
Alocando Memória com n e w ...841
Alocando M últiplas M a triz e s... 842
Testando a Falta de Espaço Livre ... 843
Considerações sobre o Espaço no H e a p ...844
Usando Ponteiros far e o O perador n e w ...845
Liberando Memória de Volta ao Espaço Livre ... 846
Com preendendo as Referências de C + + ...847
Passando um a Referência a um a F u n ç ã o ...848
A tentando para os O bjetos O c u lto s ...849
Usando Três M odos de Passar Parâmetros ... 850
Regras para Trabalhar com R eferências... 851
As Funções Podem Retornar Referências... 852
Usando a Palavra-Chave inline de C + + ... 853
Usando a Palavra-chave asm de C + + ... 854
Lèndo um Caractere Usando c i n ... 855
Escrevendo um Caractere com c o u t ... 856
Escrevendo um Programa Simples de Filtro ...857
Escrevendo um C om ando Tee S im p le s...858
Escrevendo um C om ando First Simples ... 859
Escrevendo um C om ando First M e lh o r...860
Testando o Final do A rq u iv o ... 861
Gerando um a Nova Linha com e n d l ... 862
Com preendendo as Especificações de L ig a ção ... 863
Com preendendo a S o b re c a rg a ...864
Sobrecarregando as F u n çõ es... 865
Sobrecarregando Funções: um Segundo E x e m p lo ... 866
Evitando a Ambigüidade da Sobrecarga... 867
Lendo um a Linha de Cada Vez com cin ...868