You are on page 1of 16

TIPOS DE DATOS C++

A toda variable que se use en un programa, se le debe asociar


(generalmente al principio del programa) un tipo de dato especfico.
Un tipo de dato define todo el posible rango de valores que una variable puede tomar al
momento de ejeui!n del programa " a lo largo de toda la vida #til del propio
programa$
%os tipos de datos m&s omunes en C++ son'
TIPO DATO !PA"IO ##O$IA $A%&O
unsigned c'ar ( bits ) a *++
c'ar ( bits ,-*( a -*.
s'ort int -/ bits ,0*,./( a 0*,./.
unsigned int 0* bits ) a 1,*21,2/.,*2+
int 0* bits ,*,-1.,1(0,/1( a
*,-1.,1(0,/1.
unsigned long 0* bits ) a 1,*21,2/.,*2+
enum -/ bits ,*,-1.,1(0,/1( a
*,-1.,1(0,/1.
long 0* bits ,*,-1.,1(0,/1( a
*,-1.,1(0,/1.
float 0* bits 0.1 3 -),0( a 0.1 3
-)40((/ dec)
double /1 bits -.. 3 -),0)( a
-..5-)40)((-+ dec)
long double () bits 0.1 3 -),120* a -.-
3 -)4120*
void sin valor


Para manejar adenas de arateres (strings)* se debera usar un arregllo de arateres
on el siguiente formato$
C+ar nomstring,ant de elementos-.
Ejemplo
C+ar nombre,/0-.
C+ar iudad,10-.
Para argar on un dato se usa el siguiente odigo.
strp"(arrera*2ing sistemas2).
3ariables arreglos de arateres* tienen que usar sus funiones de manipulai!n que
vienen en la libreria string$+* algunas de estas funiones son' strp"()* strat()* strmp()*
strlen()* et$
Estrutura de Datos'
Una estrutura de datos es una manera de almaenar " organi4ar datos para failitar el
aeso " modifiaiones$ 5o +a" una estrutura de datos que sirva para todos los
prop!sitos* " por eso es importante saber sus ventajas " desventajas$ Este doumento es
una olei!n de apuntes para el urso de Estruturas de Datos$ %os apuntes se +an
tomado de algunas fuentes que son detalladas en la sei!n de bibliograf6a$
Arreglos
Definicin 1 Un arreglo se compone de elementos de igual tamao almacenados
linealmente en posiciones de memoria consecutiva.
Se puede aeder a ada elemento de datos individual utili4ando un sub6ndie* o 6ndie*
para seleionar uno de los elementos$ En "6"44 * un arreglo no es un tipo de datos
est&ndar. es un tipo agregado ompuesto de ualquier otro tipo de datos$
%os arreglos se pueden definir usando tipos de datos mi7tos debido a que se supone que
todos los elementos son del mismo tama8o$ Puesto que todos los elementos son del
mismo tama8o " "a que este +e+o se utili4a para a"udar a determinar !mo loali4ar
un elemento dado* resulta que los elementos son almaenados en loalidades de
memoria ontiguas$
%o m&s importante a tener en uenta es' El nombre de un arreglo es visto por el
ompilador omo un puntero9onstante al primer elemento del arreglo$ Esto es mu"
importante' a) El nombre del arreglo es visto omo un tipo puntero* " m&s
espe6fiamente* b) un puntero onstante 9signifia una direi!n de memoria bloqueada
para el primer elemento de un arreglo9$ Por ejemplo* aunque una delarai!n de arreglo
toma la f!rma gen:ria'
Tipo7lementoArra8 %ombreArra8 9 %umeroDelementos :
El ompilador ve la delarai!n omo
Tipo7lementoArra8 5 const %ombreArra8 ; <%ombreArra89):=
Por esta ra4!n* un identifiador de arreglo no puede ser usado nuna omo un valor-i
(valor i4quierdo)$ %os valores i4quierdos representan variables que su ontenido puede
ser alterado por el programa. freuentemente apareen a la i4quierda de las sentenias
de asignai!n$
Si los nombres de arreglo fueran variables i4quierdos permitidos* el programa podr6a
ambiar sus ontenidos$
float !alariosDempleados9#a37empleados:=
.
.
.
!alariosDempleados ; 1+.02.)=
El efeto +ar6a ambiar la direi!n iniial del propio arreglo$
Declaraciones de un arreglo
%a sinta7is de delarai!n de arreglos es'
tipo nombre7arreglo 9numero7de7elementos:=
%os siguientes son dos ejemplos de delaraiones de arreglos v&lidas en "6"44 '
int "oordenadasDePantalla9+:= 65>n arreglo de + enteros 56
c'ar ID"ompania9*):= 65>n arreglo de *) caracteres 56
Figura 1: Arreglo "oordenadasDePantalla on 6ndies de despla4amiento v&lido
En la figura ; se muestra el primer arreglo que fue delarado on el tipo de n#meros
enteros* llamado "oordenadasDePantalla* oupa en memoria < loalidades de
memoria ontiguas* ada una de ellas apa4 de almaenar un n#mero entero$
Atualmente es om#n que los n#meros enteros sean de /1 bits* esto +ae que el arreglo
"oordenadasDePantalla oupe bits
5o se permite utili4ar nombres de variables dentro de los or+etes$ Por esto no es
posible evitar la espeifiai!n del tama8o del arreglo +asta la ejeui!n del programa$
%a e7presi!n debe ser un valor onstante* para que el ompilador sepa e7atamente
u&nto espaio de memoria tiene que reservar para el arreglo$
Una buena pr&tia de programai!n es usar onstantes predefinidas$
?define "oordenadas7#a3 *)
?define Tamano7#a@7"ompania7Id -+
int "oordenadasDePantalla9"oordenadas7#a3:=
c'ar ID"ompania9Tamano7#a@7"ompania7Id:=
El uso de onstantes predefinidas garanti4a que futuras referenias al arreglo no e7edan
el tama8o del arreglo definido$
Iniciacin del arreglo
"6"44 proporiona / maneras de iniiar elementos del arreglo'
Por defecto:
Cuando son reados* se aplia solamente a arreglos globales " est&tios$
Explcita:
Cuando son reados* suministrando datos de iniiai!n
Tiempo de ejecucin:
Durante la ejeui!n del programa uando se asignan o opias datos en el
arreglo$
Acceso a los elementos de un arreglo
Si se tiene un error uando se utili4an arreglos en "6"44 * de seguro el error involura el
aeso a los elementos del arreglo* por la simple ra4!n de que el primer elemento est&
en una posii!n 0* no ;$ De manera que el #ltimo elemento del arreglo lo enontramos
en n,-* donde n es el n#mero de elementos$ Supongamos la siguiente delarai!n'
int stado9$ango7#a3imo7stado:;A,-,),-B=
%a siguiente sentenia tiene aeso a 9;'
stado9):=
Si esribimos stado90: ausar& un error porque no +a" = elementos$
Clculo del tamao de un arreglo (sizeof())
Es freuente utili4ar el operador siCeof() para alular la antidad de espaio que se
neesita almaenar para un objeto'
65
5 e3ploresC.cpp
56
?includeDiostream.'E
?define ma3Dias!emana .
int main(void)A
int desplaCamiento, ma3ForasDiarias9ma3Dias!emana:=
coutDDGsiCeof(int) esGDD(int)siCeof(int)DDGHnHnG=
for(desplaCamiento;)=desplaCamientoDma3Dias!emana=
desplaCamiento44)
coutDDG<ma3ForasDiarias9G
DDdesplaCamiento
DDG:;G
DD<ma3ForasDiarias9desplaCamiento:DDGHnG=
return )=
B
Arreglos multidimensionales
El t:rmino dimensin representa el n#mero de 6ndies utili4ados para referirse a un
elemento partiular en el arreglo$ %os arreglos de m&s de una dimensi!n se llaman
arreglos multidimensionales$
65
6 dosDim.cpp
56
?include DiostreamE
?define numIilas 1
?define num"olumnas +
int main (int argc, c'ar 5 const argv9:) A
int despIila, desp"olumna, desplaCamiento, multiplo,
desp"alculados9numIilas:9num"olumnas:=
for(despIila;)=despIilaDnumIilas=despIila44)
for(desp"olumna;)=desp"olumnaDnum"olumnas=desp"olumna4
4)A
desplaCamiento;num"olumnas,desp"olumna=
multiplo;despIila=
desp"alculados9despIila:9desp"olumna:;
(despIila4-)5desp"olumna4desplaCamiento
5 multiplo=
B=
for(despIila;)=despIilaDnumIilas=despIila44)A
stdJJcoutDDGIila actualJ GDDdespIilaDDGHnG=
stdJJcoutDDGDistancia relativa desde la baseJ GDDGHnG=
for(desp"olumna;)=desp"olumnaDnum"olumnas=desp"olumna4
4)
stdJJcoutDDG G
DDdesp"alculados9despIila:9desp"olumna:
DDG G=
stdJJcoutDDGHnHnG=
B
return )=
B
B
Arreglos como argumentos de funciones
Es neesario reordar tres osas al pasar arreglos omo par&metros de funiones'
;$ Todos los arreglos son pasados en llamada9por referenia$
1$ Debido a que el arreglo es pasado en llamada por referenia* ser6a inorreto
para la funi!n llamada devolver el arreglo en una sentenia return()=$ Esta
sentenia est& de m&s$
/$ Todos los elementos del arreglo son pasados a las funiones en llamada por
valor$ lo que signifia que se pasa una opia del elemento* no la direi!n del
elemento$
65
66 ereArra8.3code
56
?include DiostreamE
?include Dct8pe.'E
?define ma3Arra8 +
void Arra8#a8uscula(c'ar Arra89ma3Arra8:)=
int main (int argc, c'ar 5 const argv9:) A
int desplaCamiento=
c'ar Arra89ma3Arra8:;
AKaK,KeK,KiK,KoK,KuKB=
for(desplaCamiento;)=desplaCamientoDma3Arra8=
desplaCamiento44)
stdJJcoutDDArra89desplaCamiento:=
stdJJcoutDDGHnG=
Arra8#a8uscula(Arra8)=
for(desplaCamiento;)=desplaCamientoDma3Arra8=
desplaCamiento44)
stdJJcoutDDArra89desplaCamiento:=
return )=
B
void Arra8#a8uscula(c'ar Arra89ma3Arra8:)
A
for(int desplaCamiento;)=desplaCamientoDma3Arra8=
desplaCamiento44)
Arra89desplaCamiento:;toupper(Arra89desplaCamiento:)=
66Aqui return arra8 seria incorrecto
B
%a salida del programa demuestra que el arreglo se pasa en llamada por referenia* "a
que el primer ilo for da omo salida los ontenidos de min#sulas originales' aeiou*
mientras que el segundo ilo for en main() da omo salida los ontenidos del arreglo
despu:s del llamado a la funi!n Arra8#a8uscula()J AIO>$
Claramente* dentro del uerpo de la funi!n Arra8#a8uscula()* +a ambiado el
arreglo de regreso en la funi!n main()$ el siguiente ejemplo es una simple
modifiai!n de este algoritmo* s!lo que en ve4 de pasar el arreglo ompleto* se pasa
ada elemento individual'
65
66 ereArra8*.3code
56
?include DiostreamE
?include Dct8pe.'E
?define ma3Arra8 +
void lementosArra8#a8uscula(c'ar un"'ar)=
int main (int argc, c'ar 5 const argv9:) A
int desplaCamiento=
c'ar Arra89ma3Arra8:;
AKaK,KeK,KiK,KoK,KuKB=
for(desplaCamiento;)=desplaCamientoDma3Arra8=desplaCamiento44)
stdJJcoutDDArra89desplaCamiento:=
stdJJcoutDDGHnG=
for(desplaCamiento;)=desplaCamientoDma3Arra8=desplaCamiento44)
lementosArra8#a8uscula(Arra89desplaCamiento:)=
for(desplaCamiento;)=desplaCamientoDma3Arra8=desplaCamiento44)
stdJJcoutDDArra89desplaCamiento:=
return )=
B
void lementosArra8#a8uscula(c'ar un"'ar)
A
un"'ar;toupper(un"'ar)=
B
%a salida del programa es'
aeiou
aeiou
valarra8 'as e3ited Lit' status ).
Apuntadores
Definicin 2 Un apuntador es una variable que contiene una direccin de memoria.
Supongamos una variable de tipo entero que se llama contenido$A# " otra variable que
se llama direccion$A# que puede ontener una variable de tipo entero$ En "6"44 una
variable preedida del operador > devuelve la direi!n de la variable en lugar de su
ontenido$ As6 que para asignar la direi!n de una variable a otra variable del tipo que
ontiene direiones se usan sentenias omo esta'
direccion$am ; <contenido$A#
Figura 2: contenido$A# se asigna a la loalidad de memoria on direi!n ??<;
En la figura 1 se ilustra el nombre de la variable contenido$A# " se observa que se
enuentra en la direi!n ??<; de la memoria$ El ontenido de esta loalidad no se
muestra$ Una variable que ontiene una direi!n* tal omo direccion$A#* se llama
variable apuntador o simplemente apuntador$
Despues que la sentenia anterior se ejeuta* la direi!n de contenido$A# ser&
asignada a la variable apuntador direccion$A#$ %a relai!n se e7presa diiendo que
direccion$A# apunta a contenido$A#$ %a figura / ilustra esta relai!n$
Figura 3: 5otai!n de fle+a para los apuntadores
El aeso al ontenido de una elda u"a direi!n est& almaenada en la variable
direccion$A# es tan senillo omo poner al iniio de la variable apuntador un
asteriso' 5direccion$A#$ %o que se +a +e+o es eliminar la referenia direta$ Por
ejemplo* si se ejeutan las siguientes dos sentenias* el valor de la elda llamada
contenido$A# ser& de 10 (v:ase la figura =)$
direccion$A# ; <contenido$A#=
5direccion$A# ; *)=
Figura : A contenido$A# se le asigna el valor entero 10
Declaraciones de variables apuntador
"6"44 requiere una definii!n para ada variable$ Para definir una variable apuntador
direccion$A# que pueda ontener la direi!n de una variable int* se esribe'
int 5direccion$A#=
@ealmente e7isten dos partes separadas en esta delarai!n$ El tipo de dato de
direccion$A# es'
int 5
" el identifiador para la variable es
direccion$A#
El asteriso que sigue a int signifia AAapuntador aBB$ Esto es* el siguiente tipo de dato es
una variable apuntador que puede ontener una direi!n a un int' int 5
En "6"44 una variable apuntador ontiene la direi!n de un tipo de dato partiular'
c'ar 5direccion7c'ar=
c'ar 5direccion7int=
El tipo de dato de direccion7c'ar es diferente del tipo de dato de la variable
apuntador direccion7int$ En un programa que define un apuntador a un tipo de dato "
utli4a :ste para apuntar a otro tipo de dato* pueden ourrir errores en tiempo de
ejeui!n " advertenias en tiempo de ompilai!n$ Una pr&tia de programai!n
pobre ser6a definir un apuntador de una forma " luego utili4ar :ste de alguna otra forma$
Por ejemplo'
int 5direccion7int=
float un7float ; 2(.01=
direccion7int ; <un7float=
Utilizacin de punteros en sentencias sencillas
3eamos el siguiente ejemplo'
65
66 c'angeMals.3code
56
()-) ?include DiostreamE
()*)
()0) int main (int argc, c'ar 5 const argv9:) A
()1) int A7int;-+, N7int;0., Temp7int=
()+) int 5direccion7int=
()/)
().) stdJJcoutDDGl contenido de A7int esJGDDA7intDDGHnG=
()() stdJJcoutDDGl contenido de N7int esJGDDN7intDDGHnG=
()2) direccion7int ; <A7int=
(-)) Temp7int ; 5direccion7int=
(--) 5direccion7int ; N7int=
(-*) N7int ; Temp7int=
(-0) stdJJcoutDDGDespues del intercambioJGDDGHnHnG=
(-1)
(-+) stdJJcoutDDGl contenido de A7int esJGDDA7intDDGHnG=
(-/) stdJJcoutDDGl contenido de N7int esJGDDN7intDDGHnG=
(-.) return )=
(-() B
En la l6nea (0=) se +an delarado tres variables de tipo entero* se da a ada elda un
nombre " se iniiali4an 1 de :stas$ Supondremos que la direi!n de memoria asignada
para la variable A7int es la direi!n +0*(* " la direi!n en memoria @AC asignada
para la variable N7int es la direi!n .2-/* " la elda llamada Temp7int se le +a
asignado la direi!n *0(+$ 3:ase la figura <.
Figura !: Desripi!n de las tres variables en la memoria
En la l6nea (0<) se define un apuntador a un tipo de dato entero llamado
direccion7int$ %a sentenia asigna la elda " da a :sta un nombre$
%uego* en la l6nea (0D)* la terera sentenia asigna a direccion7int la direi!n de
A7int (figura E)$
Figura ": direccion7int dada la direi!n de A7int
%a l6nea (;0) utili4a la e7presi!n 5direccion7int para aeder al ontenido de la elda
a la ual apunta direccion7int'
Temp7int ; 5direccion7int=
Por onsiguiente* el valor entero ;< se almaena en la variable Temp7int$ Si no se pone
el 5 enfrente de direccion7int=* la sentenia de asignai!n almaenar6a ilegalmente el
ontenido de direccion7int en la elda nombrada Temp7int* pero se supone que
Temp7int ontiene un entero* no una direi!n$ Este puede ser un error mu" dif6il de
loali4ar puesto que mu+os ompiladores no emiten ninguna adverteniaFerror$
Para empeorar el asunto* la ma"or6a de los apuntadores son eranos* lo que signifia
que oupan 1 b"tes (= b"tes para apliaiones de /19bits)* el mismo tama8o que un
entero en una PC$
%a sentenia (;;) opia el ontenido de la variable N7int en la elda apuntada por la
direi!n almaenada en direccion7int(figura ?)'
5direccion7int ; N7int=
Figura #: Se opia el ontenido de N7int usando la notai!n de fle+a de apuntadores
%a #ltima sentenia en la l6nea (;1) simplemente opia el ontenido de una variable
entera* Temp7int en otra variable entera N7int (figura G
Figura $: Se opia Temp7int en N7int utili4ando asignai!n normal$
Debemos de asegurarnos de omprender la diferenia entre qu: se referenia uando
una variable puntero est& preedida por el operador de indirei!n " u&ndo no est&
preedida por este operador$
Para este ejemplo* la primera sinta7is es un apuntador a una elda que puede ontener
un valor entero$ %a segunda sinta7is referenia la elda que ontiene la direi!n de otra
elda que puede ontener un entero$
Utilizacin incorrecta del operador de direccin
5o se puede utili4ar el operador de direi!n sobre toda e7presi!n "6"44 $ El siguiente
ejemplo demuestra aquellas situaiones donde no se puede apliar el operador de
direi!n >$
puedeAlmacenarDireccionDe"onstante ; <0.=
int $A#7int ; +=
puedeAlmacenarDireccionDe3presionTemp ; <($A#7int 4-+)=
puedeAlmacenarDireccionDe$egistro ; <var$egistro=
%a primera sentenia trata de obtener ilegalmente la direi!n de un valor onstante
integrado$ %a sentenia no tiene sentido puesto que /? no tiene una elda de memoria
asoiada on :ste$
%a segunda sentenia de asignai!n intenta devolver la direi!n de la e7presi!n
$A#7int4-+$ 5o e7iste direi!n asoiada on la e7presi!n puesto que la e7presi!n en
s6 misma es realmente un proeso de manipulai!n de pila$
5ormalmente* el #ltimo ejemplo respeta la demanda del programador para definir
var$egistro omo un registro m&s que omo una elda de almaenamiento en la
memoria interna$ Por onsiguiente* no podr6a devolverse " almaenarse la direi!n de
elda de memoria$ El ompilador "6"44 da la memoria de variable* no el
almaenamiento de registro$
Estructuras C/C++
Definicin 3 Una estructura es un grupo de variables las cuales pueden ser de
diferentes tipos sostenidas o mantenidas juntas en una sola unidad. La unidad es la
estructura.
Sintais ! reglas para estructuras en C/C++
En "6"44 se forma una estrutura utili4ando la palabra reservada struct* seguida por
un ampo etiqueta opional* " luego una lista de miembros dentro de la estrutura$ %a
etiqueta opional se utili4a para rear otras variables del tipo partiular de la estrutura'
struct campo7etiquetaA
tipo7miembro miembro7-=
tipo7miembro miembro7*=
tipo7miembro miembro70=
J
J
tipo7miembro miembro7n=
B=
Un punto " oma finali4a la definii!n de una estrutura puesto que :sta es realmente
una sentenia "6"44 $ Algunos de los ejemplos usan la estrutura'
struct stbarcoA
c'ar sCtipo9i!tring-+4i%ull7c'ar:=
c'ar sCmodelo9i!tring-+4i%ull7c'ar:=
c'ar sCtitular9i!tring*)4i%ull7c'ar:=
int ianio=
long int l'oras7motor=
float fprecioventa=
B=
En un programa* podemos asoiar una variable on una estrutura utili4ando una
sentenia similar a la siguiente'
struct stbarco stbarco7usado=
%a sentenia define stbarco7usado de tipo struct stbarco$ %a delarai!n requiere
el uso del ampo etiqueta de la estrutura$ Si esta sentenia est& ontenida dentro de una
funi!n* entones la estrutura* llamada stbarco7usado* tiene un &mbito loal a esa
funi!n$ Si la sentenia est& ontenida fuera de todas las funiones de programa* la
estrutura tendr& un &mbito global$ Es posible delarar una variable usando esta
sinta7is'
struct stbarcoA
c'ar sCtipo9i!tring-+4i%ull7c'ar:=
c'ar sCmodelo9i!tring-+4i%ull7c'ar:=
c'ar sCtitular9i!tring*)4i%ull7c'ar:=
int ianio=
long int l'oras7motor=
float fprecioventa=
B stbarco7usado=
Aqu6 la delarai!n de variable va antes del punto " oma final$ Cuando se asoia s!lo
una variable on el tipo estrutura* el ampo etiqueta puede ser eliminado* por lo que
ser6a posible esribir'
struct A
c'ar sCtipo9i!tring-+4i%ull7c'ar:=
c'ar sCmodelo9i!tring-+4i%ull7c'ar:=
c'ar sCtitular9i!tring*)4i%ull7c'ar:=
int ianio=
long int l'oras7motor=
float fprecioventa=
B stbarco7usado=
Utilizacin de miembros de estructuras
Para aesar a los miembros de las estruturas se usa el punto u operador miembro ($)$
%a sinta7is es'
estructura%ombre.miembro%ombre
Por ejemplo en'
gets(stbarco7usado.sCmodelo)=
Aqu6* stbarco7usado es el nombre asoiado on la estrutura* " sCmodelo es una
variable miembro de la estrutura* otro ejemplo'
stdJJcinEE stbarco7usado.sCtipo=
Esta sentenia leer& la mara del stbarco7usado en el arreglo de arateres* mientras la
pr!7ima sentenia imprimir& el preio de venta de stbarco7usado en la pantalla$
srdJJcoutDD stbarco7usado.fprecioventa=
Ejemplo de estruturas'
65 fraction!truct.cpp ,
Programa para demostrar el uso de los
tipos !truct en "44, este tipo de datos
es util para los programadores para crear
sus propias estructuras de tipos.
56
?include DiostreamE
using namespace std=
66 Definimos un nuevo tipo de estructura llamada Iraction
66 como la definicion se puso antes del GmainG
66 los tipos Iraction se pueden usar como prototipos
struct Iraction A
66 declaramos sus dos miembros
int numerator=
int denominator=
B= 66 %ote el punto 8 coma al final
66 funciones prototipos
void getIraction(Iraction <f)=
void printIraction(const Iraction <f)=
int main (int argc, c'ar 5 const argv9:)
A
66 declaramos variables de tipo Iraction
Iraction f-, f*=
66 obtenemos dos fracciones 8 las desplegamos
getIraction(f-)=
cout DD GHnf- ; G=
printIraction(f-)=
getIraction(f*)=
cout DD GHnf* ; G=
printIraction(f*)=
cout DD endl=
return )=
B
66 pedimos al usuario los valores del denominador 8 numerador
66 los almacenamos en su adecuado lugar en la estrcututra= c'ecamos si
66 el valor del denominador es valido 8 lo ponemos en - si no lo es.
void getIraction(Iraction <f) A
cout DD GHnnter t'e numeratorJ G=
cin EE f.numerator=
cout DD Gnter t'e denominatorJ G=
cin EE f.denominator=
if (f.denominator ;; )) A
cout DD GHnIllegal denominatorO Denominator is being
set to -.HnG=
f.denominator ; -=
B
B
66 imprimimos la fraccion
void printIraction(const Iraction <f) A
cout DD f.numerator DD G6G
DD f.denominator DD GHnG=
B
5ota sobre las funiones prototipos'
%as funiones prototipo tienen los siguientes usos importantes'
Estableen el tipo devuelto para las funiones que devuelven otros tipos
diferentes que int$ Aunque las funiones que devuelven valores enteris no
neesitan prototipos* se reomienda tener prototipos$
Sin prototipos ompletos* se +aen las onversiones est&ndares* pero no se
+ean los tipos o los n#meros de argumentos on el n#mero de par&metros$
%os prototipos se usan para iniiali4ar apuntadores a funiones* antes de que las
funiones sean definidas$
%a lista de par&metros se usa para +ear la orrespondenia de los argumentos
en la llamada a la funi!n on los par&metros en la definii!n de la funi!n
const en par%metros de funciones
El espeifiador const puede ser utili4ado en la definii!n de par&metros de funiones$
Esto resulta de espeial utilidad en tres asos$ En los tres el fin que se persigue es el
mismo' indicar que la funcin no podr cambiar dichos argumentos'
Con par&metros de funiones que sean de tipo matri4 (que se pasan por
referenia)$ Ejemplo' int strlen(const c'ar9:)=
Cuando los par&metros son punteros (a fin de que desde dentro de la funi!n no
puedan ser modifiados los objetos refereniados)$ Ejemplo' int printf
(const c'ar 5format, ...)=
Cuando el argumento de la funi!n sea una referenia* previniendo as6 que la
funi!n pueda modifiar el valor refereniado$ Ejemplo' int dimen(const @
<3*)=

You might also like