Você está na página 1de 153
_ LENGUAJE DE / PROGRAMACION EDICION EN INGLES UNIX es una marca repistrada AT & T ENGUAJE DE PROGRAMACION © ‘Traducido de la segunda edicion en inglés de: ‘THE C PROGRAMMING LANGUAGE 1.0 parcial de esta obra, por cualquier medio o método sin autorizacion escrita del editor DERECHOS RESERVADOS © 1991 respecto a la segunda edicion en espaol por PRENTICE-HALL HISPANOAMERICANA, S.A. Alacornulco Nim, 500-5? Piso Col Industrial Atowo 53519, Naucalpan de Jur, Edo. de México Miembro de Ia Camara Nacional de la Industria Editovial, Reg. Nim, 1524 ISBN 968-880-205-0 ISBN 0-13-110362-8 IMPRESO EN MEXICO / PRINTED IN MEXICO Prefacio Prefacio a ta primera edicion Introduccién lo 1, Introduceiin general ‘Comencemss Variables y expresiones aritméticas La proposiién for CConstantes simbdlicas Entrada y salida de caracteres Arreglos Funciones ‘Argumento;—llamada por valor 9 Arreplos de caracteres 10 Variables externas y alcance Capi 1 1 1 1 1 1 1 1 1 Capitulo 2, Tipos, operadores y expresiones 2 Nomibres de variables 22 Tipos y tamaiios de datos 23 Constanes 214 Dectaraciones 2S. Operadores aitméticos 26 Operadores de relacion y Wgicos 2.7 Conversions de tipo 28 Operadores de incremento y decremento 39. Operadores para manejo de bits 2.10 Operadores de asignacion y expresiones 2.11 Expresiones condiconales 212 Precedencia y orden de evaluacign lo 3. Control de flujo 3.1 Proposiciones y bloques CONTENIDO ix 3.7. Break y continue 3.8 Goto y etiquetas lo 4. Funciones y ta estructura del programa 4.1. Conceptos basicos de funciones 42 alores no-enteros 43 44 4.11 EI preprocesador de C Capitulo 5. Apuntadores y arreglos 5.1 Apuntadores y direcciones 5.2. Apuntadores y argumentos de funciones 5.3. Apuntadores y arreglos 5.4 Ariumética de direcciones 5.5 Apuntadores a caracteres y funciones 5.6 Arreglos de apuntadores; apuntadores a apuntadores 5.7. Arreglos multidimensionales 5.8 Inicializacion de arreglos de apuntadores 5.9 Apuntadores vs. arreglos multidimensional 5.10 Argumentos en la linea de comandos 5.11 Apuntadores a funciones 5.12 Declaraciones complicadas 5. Estructuras Conceptos basicos sobre estructuras Estructuras y funciones Arreglos de estructuras Apuntadores 0 estructuras Estructuras ferenciadas Buisqueda en tabl Typedet Uniones ‘Campos de bits 105 de longitud variable to—seanf 7.6 Manejo de errores—stderr y exit Alcance y ligadura Preprocesamiento Gramatica 9 Senales: Funciones de fecha y hora: Apéndice C. Resumen de nodificaciones Prefacio El mundo de la computacién ha suftido una revolucién desde la publicacién, en 1978, de £! lenguaje de programacién C. Las grandes computadoras son aho- ra mucho mas grandes, y las computadoras personales tienen capacidades que ri- valizan con los me cambiado en ese La creciente popularidad de C, los cambios en el lenguaje a lo largo de los aios, y la creacién de compiladores por grupos no involucrados en su diseito, se combinaron para demostrar la necesidad de una definicidn del lenguaje mas pre- cisa y contempordnea que la que proporcioné la primera edicién de este libro. En 1983, el Americas National Standards Institute (ANSI) estableci6 un cor ‘cuyos propésitos eran producit “una definicion no ambigua del lenguaje Cc, dependiente de la maquina’, cuidando la conservacion de su es do es el estandar ANSI para el lenguaje C i pero no descritas en la primera cedicion, particularmente la asigna nal, y al mismo tiempo establece expliciamente cuales aspectos del lenguaje tienen aim dependensia de maquina. Esta segunda edicion de El lenguaje de programacién C lo describe tal como lo defini6 el estandar ANSI. (En el momento de escribir esta edicidn, el esténdar se encontraba en la eta: 3¢ esperaba su aprobacién a finales Tenguaje forma. En gene- isible es la nueva jodernos compiladores ma- ral esto no hace una forma de declaras nejan ya la may! x PREFACIO Hemos tratado de mantener la brevedad de lz primera edicién. Bl lenguaje C no es grande, y no le esta bien un gran libro. Hemos mejorado la exposicion de ccaracteristicas criticas, como los apuntadores, que son parte central en la progra- macién con C. Hemos redefinido los ejemplos criginales y agregamos ejemplos nuevos en varios capitulos. Por ejemplo, se aumexté el tratamiento de declarac nes complicadas con programas que convierten ceclaraciones en palabras y vice- versa, Como antes, todos los ejemplos se han probado directamente a partir del texto, el cual estd diseniado de manera que lo pueda leer la maquina. EI ape ‘manual de referencia, no es el estandar, sino que nuestra rencidn fue trasladar la esencia del esténdar a un espacio més pequeiio. Esté hecho con el dnimo de que proporcione una facl comprensién para los progra- adores, pero no como una definicidn del lenguaje para quienes escriben compi- ladores —ese papel proj es un resumen de las pos tiene el pro- pésito de ser una referencia para programadores, no para implantadores. En el apéndice C se offece un resumen de los cambios de la versién original. ‘Como mencionamos en el prefacio a la primera edicién, C “se lleva bien, en cen que aumenta m una década mas de expe ain lo sentimos asi. Descamos que ro le ayude a aprender et enguaje C y también c6 ‘Tenemos un profundo reconocimiento hacia los amigos que nos ayudaron a producir esta segunda edicidn. Jon Bentley, Doug Gwyn, Doug Mcllroy, Peter Nelson y Rob Pike nos dieron valiosos comentarias sobre casi cada pagina del bo- rrador de este manuscrito, Estamos agradecidos por la cuidadosa lectura de Al Aho, Dennis Allison, Joe Campbell, G. R. Emin, Karen Fortgang, Allen Ho- lub, Andrew Hume, Dave Kristol, John Linderman, Dave Prosser, Gene Spat- ford, y Chris Van Wyk. También recibimos tities sugerencias de Bill Cheswick, Mark Kernighan, Andy Koening, Robin Lake, Tom London, Jim Reeds, Clovis Tondo y Peter Weinberger. Dave Prosser respondi6 muchas preguntas detalladas acerca del estandar ANSI. Utilizamos extensivamente el intérprete de C++ de Bjarne Stroustrup, para la prueba local de nuestros programas, y Dave Kristol nos ofrecid un compilador ANSI C para las prucbas finales. Rich Drechsler nos la Brian W. Kernighan Dennis M. Ritchie Prefacio a la primera edicion Ces un lenguaje de programacién de propésito general que ofrece como ven- tajas economia de expresiGn, control de flujo y estructuras de datos modernos conjunto de operadores. Ademas, C no es un lenguaje de “muy alt “grande’’, y no est especializado en alguna érea especial de aplicacién, Pero su ausencia de restricciones y su generalidad lo hacen mas conveniente y cfectivo para muchas tareas que otros lenguajes supuestamente mas poderosos. Originalmente, C fue disefiado para el sistema operativo UNIX y Dennis Ritchie Jo implanté sobre el mismo en la DEC PDP-11, El sistema operativo, el compila- dor de Cy esencialmeate todos los programas de aplicacién de UNIX Gincluyendo todo el sofware utilizado para preparar este libro) estan escritos en C. También cxisten compiladores para la produccién en otras méquinas, incluyendo la IBM System/370, la Honeywell 6000 y la Interdata 8/32. El lenguaje C no esta ligado € ningin hardware o sistema en particulary es fécil eseribir programas que corre- sin cambios en evalquier maquina que mangje C. 1a finalidad de este libro es ayudar al lector a aprender cémo programat . Contiene una introduccién general para hacer que los nuevos usuarios se in cien lo mas pronto posible, capitulos separados sobre cada caracteristica impor- tante y un manual de referencia. La mayoria de las exposiciones estén basadas ‘nla lectura, escrituray revisién de ejemplos, mas que en el simple establecimien- to de reglas. En su mayoria, los ejemplos son programas reales y completos, no fragmentos aislados. Todos los ejemplos han sido probados directamente a partir del texto, el cual esta en forma legible para la maquina. Ademas de demostrar ‘c6mo hacer un uso efectivo del lenguaje, donde ha sido posible, tratamos de ilus- trar algoritmos utiles y principios de buen estilo y disefio. El libro no es un manual de introduccién a la programacién; se supone en él familiaridad con los conceptos basicos de programacidn, como variables, propo- siciones de asignaci6n, ciclos y funciones. No obstante, un programador novato deber ser capaz de leer y obtener los conceptos del lenguaje, aunque le ayudaria la cooperacién de un colega més experimentado, De acuerdo con nusstra experiencia, C ha demostrado ser un lenguaje agrada- ble, expresivo y versatil para una amplia variedad de programas. Es facil de apren- Aer y se obtienen mejores resultados a medida que aumenta nuestra experiencia on él. Deseamos que este libro le ayude al lector a usarlo correctamente n

Você também pode gostar