Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

treba mi pomoc!!

[es] :: C/C++ programiranje :: treba mi pomoc!!

[ Pregleda: 1488 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

1922
pasteta argeta

Član broj: 86281
Poruke: 1
*.pppoe01-92.bih.net.ba.



Profil

icon treba mi pomoc!!07.03.2006. u 11:06 - pre 221 meseci
e ovako dobio sam seminarski na temu "napredni zadaci sa upotrebom funkcije sa referentim parametrima i operacije nad podacima tipa char "pa ako moze neko samo jedan primjer da napise da znam kako da radim jer ja moram da char koristim u funkciji a veze nemam kako cu pa eto ako neko moze i zna da pomogne
hvala
 
Odgovor na temu

z@re
Zarko Bulatovic
Split

Član broj: 29849
Poruke: 443
*.cmu.carnet.hr.



+25 Profil

icon Re: treba mi pomoc!!07.03.2006. u 22:34 - pre 221 meseci
prilikom prosljedjivanja lokalne varijable u neku drugu funkciju, imas dva glavna izbora kako to mozes odradit : mozes prosljedit kompletnu vrijednost varijable kao ulazni parametar, ili referencu (pointer) na tu varijablu. razlika je :

- kod prosljedjivanja vrijednosti varijable u drugu funkciju, kreira se lokalna kopija varijable za tu funkciju nad kojom se rade operacije. ovo nije dobro rjesenje iz dva razloga : ako se ta varijabla modificira u funkciji, modifikacije su vidljive samo u toj funkciji. varijabla se vraca na originalnu vrijednost cim se izadje iz funkcije, jer funkcija nije radila sa originalom, vec sa lokalnom kopijom. druga mana je memorijsko zauzece. ako imas neku veliku matricu deklariranu u main() funkciji koja zauzima par stotina kilobytea memorije, i prosljedis je po vrijednosti u drugu funkciju, program kopira tu vrijednost u lokalnu kopiju, dakle jos zauzme duplo memorije koliko treba.

- kod prosljedjivanja po referenci se koriste pointeri. pointer je pokazivac na nekakvu adresu u memoriji. znaci ti deklariras varijablu u main() funkciji, a u drugu funkciju prosljedis pointer na tu varijablu, koji sadrzi memorijsku adresu originalne varijable. tada funkcija barata sa originalnom varijablom, jer sve operacije se rade preko pointera (dakle preko adrese).

evo ti jednostavan primjer za cjelobrojne vrijednosti, prvo prosljedjivanje po vrijednosti, pa po referenci :

Code:

#include<stdio.h>

void dodaj_pet(int a);

main()
{
    int broj = 27;
    dodaj_pet(broj);
    printf("%d\n", broj);
}

void dodaj_pet(int a)
{
    a += 5;
}


Code:

#include<stdio.h>

void dodaj_pet(int *a);

main()
{
    int broj = 27;
    dodaj_pet(&broj);
    printf("%d\n", broj);
}

void dodaj_pet(int *a)
{
    *(a) += 5;
}


pokreni te kodove i vidjet ces razliku. pointer se deklarira sa asteriskom *, a na mjesto pointera se moze direktno prosljediti adresa varijable preko adresnog operatora &.

evo ti sad primjer za polje charova. vrlo jednostavan program, cija funkcija prima polje charova po referenci, i procesira polje tako da svaki znak 'a' promjeni u 'z'. primjeti da kod polja charova ne trebas stavljat adresni operator, jer ti vec sama varijabla preko koje je deklarirano polje, ako je oznacena bez [], daje adresu prvog clana polja, tj. pointer.

Code:

#include<stdio.h>
#include<string.h>

void promjeni(char *r);

main()
{
    char rec[256];
    printf("upisite recenicu :");
    gets(rec); promjeni(rec); puts(rec);
    
}

void promjeni(char *r)
{
    for(int i = 0; i < strlen(r); i++)
        if(r[i] == 'a') r[i] = 'z';
}




[Ovu poruku je menjao z@re dana 07.03.2006. u 23:37 GMT+1]

Q: HSP56 Micromodem nece da radi kompjuter ga prepozna a kad treba da se konektujem nece ne daje ni znaka zivota. u cemu je problem.

A: Crko mozda od grmljavine mozda od spanaca. Uglavnom baci ga u WC solju jako povuci vodu. Skupi 5e i uzmi drugi i ne postuj temu na pogresno mesto.
 
Odgovor na temu

[es] :: C/C++ programiranje :: treba mi pomoc!!

[ Pregleda: 1488 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.