introduccion a c parte5

Upload: michael-a-alonso-rodriguez

Post on 22-Feb-2018

216 views

Category:

Documents


0 download

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]));

    }