Punteros y Estructuras en C

September 7, 2022 | Author: Anonymous | Category: N/A
Share Embed Donate


Short Description

Download Punteros y Estructuras en C...

Description

 

             

    

Objetivo El siguiente documento es realizado para los estudiantes de laboratorio de introducción a la informática, inform ática, para para que adquieran adquieran y profundicen profundicen los los conocimientos conocimientos básicos en punteros y estructu estructuras, ras, profund prof undiza izando ndo en su su definic definición, ión, uso uso y aplicaci aplicacione oness en el lengu lenguaje aje c, con el fin fin de rea realiz lizar ar prá prácti cticas cas más complejas complejas utilizan utilizando do conocimien conocimientos tos adqu adquiri iridos dos anterior anteriormen mente te prot prototip otipo o en c.

PUNTEROS INTRODUCCION Un puntero es un tipo de variable que permite almacenar y manipular las direcciones de memoria donde se encuentran almacenados los datos, en lugar de los datos mismos. El manejo de punteros en el lenguaje C es muy poderoso y eficiente, aunque demanda extre mo cuidado en su utilización. Bien utilizado hace que el código sea más compacto y eficiente; por el contrario, su uso descuidado lleva a tener poca claridad y frecuentemente conduce a la pérdida del control de la CPU, ocasionando un comportamiento indesea ble del proceso (vulgarmente se dice que el programa "reventó"). El uso de punteros nos permite acceder al valor de una variable en forma indirecta. Para esto se utilizan dos operadores: 



& El operador operador "dirección "dirección de memoria de" de" que permite permite obtener la direcc direcc ión de memori memoria a donde don de se al aloja oja la la variabl variable e a la cual cual preced precede e ( &x es la direcc dirección ión d de e memo memoria ria de de x). * El operador "con "contenido tenido de lo apuntado por" que permite permite acceder al varlor almacenado almacenado en la dirección dirección de memoria que que indica indica el puntero puntero al cual cual precede precede *px es el cont contenido enido de lo lo apunta apu ntado do por px)

Declarac Decl aración ión de un puntero puntero Un puntero, en C, se declara de la siguien siguiente te forma :

T I P O * no nom m bre_ bre_ pun puntt e err o ;

   

 

 

             

Donde TIPO Donde TIPO es cualqu cualquier ier tipo tipo defini definido. do. Así, un un puntero puntero para para caracteres caracteres se decl declarar araría ía de la si sigui guient ente e forma:

char *pchar; Diferencia entre "*" y "&"

En C, a difere diferenci ncia a de otros otros lenguaj lenguajes es de programa programación, ción, se puede puede obtener obtener d dire irectame ctamente nte la direcci dirección ón de memoria de cualquier cualquier variable. variable. Esto es posible posible hacerlo con el operador unario unario "&"; de la siguiente siguien te forma:

c h ar a; / * Va Var i ab le ' a' d e t i p o c h ar * /    pr i n tf ( " la di r ecc i ón de m em or i a de ' a' es : % p \ n" , & a) ;

Para obtener lo apuntado por un puntero se utiliza el operador unario "*" de esta forma:               

                                

                   

Uno de los casos casos más comunes comunes dond donde e se ve la la relació relación n entre entre estos estos do doss ope operado radores res es la declarac decl aración ión y uti utiliz lizació ación n de funcione funciones: s:      

Ejemplo En el siguiente ejemplo se ilustra la inicializacion de un puntero a traves de una funcion.

              

   

 

 

             

                                        

   

 

 

             

ESTRUCTURAS Una estructura estructura es un conjunto conjunto de de una o más variables, variables, de distinto distinto tipo, agrupadas agrupadas bajo un un mismo nombre nombr e para para que su manejo sea más sencill sencillo. o. Su uti utiliz lizació ación n más habitual habitual es para la program programaci ación ón de bases bases d de e datos, datos, ya que están espe especia cialme lmente nte indicadas indica das para el trabajo con registros registros o fichas. fichas. La sintaxis sintaxis de su declaración declaración es la siguiente: siguiente:

          Donde tipo_estructura tipo_estructura es el nombre del nuevo nuevo tipo de dato que que hemos hemos crea creado do . Por ejemplo, ejemplo, tip tipo_va o_variab riable le y nombre_ nombre_vari variable able son las variab variables les que forman forman par parte te de la estruc estructur tura. a. Para definir definir variables variables del tipo tipo que acabamos acabamos de crear lo podemos podemos hacer de varia varia s maneras, aunque las dos más uti utiliz lizadas adas son: Forma 1                   

Forma 2              

En el primer caso declaramos la estructura, y en el momento en que necesitamos las variables, las declaramos. En el segundo segundo las las declaramos declaramos al mismo mismo tiempo tiempo que la estructu estructura. ra. E l problema del segu segundo ndo método es que no no podremos declarar declarar más variables variables de este tipo a lo largo del del progra programa. ma.

   

 

 

             

Para poder declarar una variable de tipo estructura, la estructura tiene que estar declarada previamente. previame nte. Se debe debe declarar antes de la función función main() main().. El manejo de las estructuras es muy sencillo, sencillo, es como el acceso a los campos ( o variables variables ) de estas estructuras. La forma de acceder a estos campos es la siguiente: variable.campo; Donde variable Donde variable es el nombre nombre de la varia variable ble de de tipo tipo estruc estructur tura a que hemos hemos ccread reado, o, y campo campo es el nombre de la variable que forma parte de la estructura. Lo veremos mejor con un ejemplo basado en la estructura definida anteriormente: 

Lo que que estamos estamos hacie haciendo ndo es almacena almacenarr el valo valorr 25 en en el campo campo edad de la vari variable able temporal temporal de tipo trabajad trabajador. or. Otra característica característica interesante interesante de las estructura estructurass es que permiten permiten pasar el contenid contenido o de una estructura a otra, siempre que sean del mismo tipo naturalmente: fijo=temporal;  Al igual que con los otros tipos de datos datos,, también es posible inicializar variables de t ipo estructura en el momento momento de su d eclaración eclaración       

Si uno uno de los campos campos de la estructura estructura es un array de números, los valores de la inicializació inicialización n deberían ir entre llaves: llaves:      

 

    

Podemos enviar enviar una estructura estructura a una función de las dos maneras maneras cono conocidas: cidas: 1.- Por valor: valor: su declar declaració ación n seria seria : void visualizar(struct trabajador); Después Desp ués declarar declararíam íamos os la variable variable fijo fijo y su llamada llamada seria: seria: visualizar(fijo) ;

   

 

 

             

2. Por referencia: su declaración seria:    

Después Desp ués declarar declararíam íamos os la variable variable fijo fijo y su llamada llamada seria: 

Por ejemplo, ejemplo, el desarrollo desarrollo de la función seria:    

En la función función visualizar, visualizar, el acceso acceso a los los campos de la variable variable datos se realiza realiza mediante mediante el operador ->, ya que tratamos tratamos con un puntero. En estos estos casos siempre utiliz utilizaremos aremos el operador operador ->. Se consigue consigue con el signo menos seguido seguido de de mayor. mayor .

 Arrays de estructuras Es posible agrupar un conjunto de elementos de tipo estructura en un array. Esto se conoce como array de estructuras estructuras::             

Podremos almacenar los datos de 20 trabajadores. Ejemplos sobre como acceder a los campos y sus elementos: Para ver el nombre nombre del cuarto trabajador, fijo[3 fijo[3].nombre; ].nombre; Para ver la tercera tercera letra del del nombre nombre del cuarto trabajador, trabajador, fijo[3].nombr fijo[3].nombre[2];. e[2];.

Typedef  El lenguaje lenguaje 'C' dispone dispone de una una declaración declaración llamada llamada typedef que permite permite la la creación de nuevos nuevos tipos de datos. Ejemplos:      

Su empleo con estructuras estructuras esta especialmente especialmente indicado. indicado. Se puede hacer hacer de varias formas:

   

 

 

             

Una forma de hacerlo:   

              

Otra forma:            

   

 

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF