introduccion a c parte5
TRANSCRIPT
-
7/24/2019 Introduccion a C Parte5
1/6
ArturoPonce 4/20/20
ArturoPonce
Introduccin aC
Parte5
Pointers
(Apuntadores)
Todavariabletiene 3cosas asociadas aella:
su tipo dedata
elvalorguardado enella
su direccin enmemoria
Por logeneralaloque seleda importancia es alvalorguardado enlavariable.Paradeterminar ladireccn deunavariablehayque usar eloperador dedireccin (&).
Por ejemplo:
&numero significa ladireccin denumero
Esa direccin sepuede guardar enuna variable,por ejemplo:direccion_numero =&numero guarda ladireccin delavariablenmero enlavariabledireccion_numero
Lospointerssonvariablesque seutilizan para guardar lasdirecciones deotras variables.
Parautilizar las direcciones
Paraesto Cprovee unoperador deindireccin (
*).
Elsmbolo *seguido deunpointersignifica
lavariablecuya direccin esta guardada en
Ejemplo:
*direccion_numero significa lavariablecuya
direccin est guardada en
direccion_numerotambin selellamalavariableapuntada por
direccion_numero
Declarando pointers
Comocualquier otra variablelospointerstienen que ser
declarados antesdeusarse.
Aldeclararla hayque declarar untipo alpointer
Por ejemplo:
Siladireccin enelpointerdireccion_numero es la
direccin deunentero,ladeclaracin sera:
int *direccion_numero;
Ladeclaracin leeas:Lavariableapuntada por
direccion_numero es unentero
Tambin sepueden tener declaraciones para pointersdefloat,
char,etc.
char*in_addr;
float*dst_addr;
-
7/24/2019 Introduccion a C Parte5
2/6
ArturoPonce 4/20/20
ArturoPonce
#include
voidmain(void)
{int *num_addr;/*declara unpointeraunint */int miles,dist;/*declara dosvariablesenteras*/
dist=158;/*guarda el158endist*/miles=22;/*guarda el22enmiles*/
num_addr =&miles;/*guarda ladireccion demilesennum_addr */
printf("Ladireccion guardada ennum_addr es %p\n",num_addr);printf("Elvalorapuntado por num_addr es %d\n\n",*num_addr);
num_addr =&dist;/*guarda ladireccion dedistennum_addr */printf("Ladireccion guardada ennum_addr es %p\n",num_addr);printf("Elvalorapuntado por num_addr es %d\n",*num_addr);
}
Trabajando con
Strings
Sitenemos:
charstring1[23];
scanf(%s,string1);
yseentra:hola como estas
string1 tendra guardado hola
Esto quiere decir:
%sleecaracteres desde elteclado mientrasnoseaunespacio enblanco
esto sepuede solucionar utilizando:
gets(string1)leetodo loque seentra hastaque encuentra \n
(enter)
Funciones para elmanejo destrings
Hayuna serie defunciones para elmanejo destringsincluidas en.
strlen()determina ellargodeunstring.Noincluye el\0.Ej:charstr1[]=abcd;strlen(str1) produce4
strcpy()ystrncpy()seusan para copiar unstringdentro deotro.
strncpy()toma un
tercer argumento n
que dice
cuantos elementos delsegundo sevanacopiar enelprimero
strcat()ystrncat()seusan para concatenar
2strings.Cuando seconcatena,elcontenido
delsegundo stringsecopia alfinaldelprimer
string.
strcat(str1,str2);
strncat(str1,str2,n);ndiceelnmero de
caracteres delsegundo que sevanacopiar enel
primero.
-
7/24/2019 Introduccion a C Parte5
3/6
ArturoPonce 4/20/20
ArturoPonce
Ej:
#include
#include
voidmain()
{charastring[80]="Lacasa";charbstring[80]="es blanca";
strcat(astring,bstring);
printf("Elnuevo stringes \"%s\".",astring);
}
output:
La
casa
es blanca
strcmp()ystrncmp(
)
seusan para comparar 2
strings. Lacomparacin sehace caracter porcaracter.Cada funcin regresa unvalorbasado enelresultado delacomparacin.
0si losstringssonidnticos (mismoscaracteres ylargo)
>0si elprimerstringprecedealfabticamente alsegundo
-
7/24/2019 Introduccion a C Parte5
4/6
ArturoPonce 4/20/20
ArturoPonce
Ej:#include#include
voidmain(){charalpha[]="abcdefghijklmnopqrstuvwxyz";
charletter=e;int position;
position=strchr(alpha,letter);if(position=='\0')
printf("Laletra %cnoesta enelstring.\n",letter);else
printf("Laletra %cesta enladireccion %Xenmemoria.\n",letter,position);
}
strstr()
busca laprimera vez que ocurre un
substringenunstring.Siseencuentra regresa un
pointeralcomienzo delsubstring.Sinoseencuentra
regresa nulo.
Ejemplo:
#include
#include
voidmain()
{
chartext[]="Itisimportantforthisblockoftexttocontaintheword'the'asmany
timesaspossible,sincethefunctionstrstr()willcountthenumberoftimes'the'isseen.
Thisisasimplemathematicaloperation.Howmanytimesdoes'the'appear?";
char*ptr;
int thecount =0;
ptr =text;
do
{
ptr =strstr(ptr,"the");
if(ptr !='\0')
{
thecount++;
ptr++;
}
}while(ptr !='\0');
printf("Lapalabra 'the'aparece %dtimes.",thecount);
}
atoi()cambiadestringaentero.Se
encuentra enstdlib.h
atof()cambiadestringafloat.Seencuentra
enstdlib.h
atol()cambiadestringalong.Seencuentra
enstdlib.h
-
7/24/2019 Introduccion a C Parte5
5/6
ArturoPonce 4/20/20
ArturoPonce
Ejercicios:
1.Qu seimprime?
#include#include#include
voidmain()
{charpart1[]=Ambosarreglos ;charpart2[]=consisten de;charpart3[]=nelementos.;charresult[80] =;strcat(result, part1);strcat(result, part2);strcat(result, part3);printf(%s,result);
}
Dado:char
s1[
]=abc;
chars2[]=aBc;
Aqu evala lasiguiente expresin:
Strcmp(s1,s2);
Qu seimprime?
#include#include#includevoidmain(){
charstr1[20]=Lejos;
charstr2[20]=;
strcat(str1, str2);
printf(%s\n%s,str1, str2);
}
Qu seimprime?
#include
#include
#include
voidmain()
{
charstr1[20]=Lejos bien lejos;
charstr2[20]=pero notanlejos;
printf(%s,strncpy(str1, str2,5));
}
Qu seimprime?
#include#include#include
voidmain()
{
charstr1[]=Casablanca;
charstr2[]=Casa;
if(strcmp(str1,str2)
-
7/24/2019 Introduccion a C Parte5
6/6
ArturoPonce 4/20/20
ArturoPonce
Qu seimprime?
#include
#include
#include
voidmain()
{
charstr1[15]=Loque quieras;
strcpy(&str[4],nos);
printf(%s\n,str);
}
Qu seimprime?
#include
#include
#include
voidmain()
{
charstr1[]=Mihermana erahija unica;
strcpy(&str[4],nos);
printf(%d\n,strlen(str));
printf(%d\n,strlen(&str[5]));
}