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

Pokazivaci(eng. pointeri)

[es] :: C/C++ programiranje :: Pokazivaci(eng. pointeri)

Strane: 1 2

[ Pregleda: 12779 | Odgovora: 32 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

@zrael


Član broj: 80614
Poruke: 21
*.adsl.net.t-com.hr.



Profil

icon Re: Pokazivaci(eng. pointeri)20.04.2006. u 19:30 - pre 219 meseci
ti i kad dinamicki alociras memoriju, npr za neki string ipak moras unijeti odredjenu duzinu znakova koja ce biti maksimalna. Ako uneses npr256 znakova. on ce koristiti koliko ti treba, ali ce maksimalan broj znakova opet biti 256
 
Odgovor na temu

opmo
Beograd

Član broj: 87495
Poruke: 75
*.dynamic.sbb.co.yu.



Profil

icon Re: Pokazivaci(eng. pointeri)24.11.2006. u 00:00 - pre 211 meseci
Da li je pozeljno uvek alocirati memoriju za svaki pokazivac ?
 
Odgovor na temu

rumpl

Član broj: 54959
Poruke: 156
*.net81-66-199.noos.fr.



Profil

icon Re: Pokazivaci(eng. pointeri)24.11.2006. u 14:52 - pre 211 meseci
Ako deklarises neki pointer koji ce ti koristiti za kopiranje jednog pointera, onda ne sluzi ni cemu da alociras memoriju.

Primer:

Code:

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

char *good_to_up(char *str)
{
  char *tmp;

  /* Pravim kopiju str-a da ne bih izgubio adresu gde se string nalazi 
  ** Nema potrebe da se malloc-uje zato sto pravimo samo kopiju str-a, tj
  ** kopiju adrese gde se nalazi string
  */
  tmp = str;

  while(*str != '\0')
    {
      if((*str >= 97) && (*str <= 122))
    *str = *str - 32;
      
      str++;
    }

  /* Vracam staru adresu str-a, tamo gde pocinje string */
  return(tmp);
}

char *bad_to_up(char *str)
{

  while(*str != '\0')
    {
      if((*str >= 97) && (*str <= 122))
    *str = *str - 32;
      
      str++;
    }

  /* Primetices da ovde vracamo adresu: str + strlen(str), zato sto smo presli preko celog
  ** stringa, a nismo sacuvali adresu gde se nalazi string 
  */
  return(str);
}

int main(int argc, char *argv[])
{
  char *str;

  str = malloc(10);

  read(1, str, 10);

  printf("||%s||\n", good_to_up(str));
  printf("||%s||\n", bad_to_up(str));
  
  return(0);
}


U mom primeru je cak greska alocirati memoriju za tmp. Ako alociras, ta memorija ce biti neupotrebljena, tj. onaj poznati memory-leak.
"The problem with the world is that everyone is a few drinks behind."
-Humphrey Bogart
 
Odgovor na temu

DjoleReject
Djordje Knezevic
Zvezdara

Član broj: 85258
Poruke: 309
*.dynamic.sbb.co.yu.



+1 Profil

icon Re: Pokazivaci(eng. pointeri)24.11.2006. u 15:13 - pre 211 meseci
@ NrmMyth - Kako to mislis da se liste prave bez pointera??? Ja ne znam za to.

Zar ne moras imati nesto u svakom clanu liste i pointer ne sledeci clan, da bi imao najjednostavniju jednoulancanu listu, a za bilo sta komplikovanije treba i vise pointera. Ovo je nacin koji ja koristim, a ako postoji neki drugi - nikad nisam ni cuo za to!!!

Objasnjenje bih molio, jer sam malo sokiran ovime.
De si Deda...
 
Odgovor na temu

rumpl

Član broj: 54959
Poruke: 156
*.net81-66-199.noos.fr.



Profil

icon Re: Pokazivaci(eng. pointeri)24.11.2006. u 23:35 - pre 211 meseci
Ja bih rekao da ne obicne liste ne mogu da se urade bez pointera.
"The problem with the world is that everyone is a few drinks behind."
-Humphrey Bogart
 
Odgovor na temu

DjoleReject
Djordje Knezevic
Zvezdara

Član broj: 85258
Poruke: 309
*.dynamic.sbb.co.yu.



+1 Profil

icon Re: Pokazivaci(eng. pointeri)26.11.2006. u 15:14 - pre 211 meseci
Pa i ja nesto prebacujem po glavi, ali nista mi ne pada na pamet... A na kakve liste mislis kad kazes "obicne"? Kakve bi bile drukcije? Kako god da ih ulancas - mora pointerima.
De si Deda...
 
Odgovor na temu

rumpl

Član broj: 54959
Poruke: 156
*.net81-66-199.noos.fr.



Profil

icon Re: Pokazivaci(eng. pointeri)26.11.2006. u 17:38 - pre 211 meseci
Pa ono, ne cirkularne, double linked i to.
Obicne... Najobicnije... :D
One sto vas uce prvo na faksu
"The problem with the world is that everyone is a few drinks behind."
-Humphrey Bogart
 
Odgovor na temu

DjoleReject
Djordje Knezevic
Zvezdara

Član broj: 85258
Poruke: 309
*.dynamic.sbb.co.yu.



+1 Profil

icon Re: Pokazivaci(eng. pointeri)26.11.2006. u 20:07 - pre 211 meseci
Najjednostavnija:

Code:
struct Elem{
NekaKlasa nekiObjekat;
Elem* next;
};


Znaci - nema jednostavnije, a da ja znam za to.
De si Deda...
 
Odgovor na temu

rumpl

Član broj: 54959
Poruke: 156
*.net81-66-199.noos.fr.



Profil

icon Re: Pokazivaci(eng. pointeri)26.11.2006. u 23:51 - pre 211 meseci
To.
"The problem with the world is that everyone is a few drinks behind."
-Humphrey Bogart
 
Odgovor na temu

rumpl

Član broj: 54959
Poruke: 156
*.net81-66-199.noos.fr.



Profil

icon Re: Pokazivaci(eng. pointeri)05.12.2006. u 19:29 - pre 211 meseci
@ NrmMyth : Ja jos uvek cekam tvoj primer lista bez pointera...
"The problem with the world is that everyone is a few drinks behind."
-Humphrey Bogart
 
Odgovor na temu

NrmMyth
Ivan Maček
Split

Član broj: 63456
Poruke: 849
*.adsl.net.t-com.hr.

Sajt: www.dump.hr


Profil

icon Re: Pokazivaci(eng. pointeri)05.12.2006. u 22:25 - pre 211 meseci
Napravi si svoju 'memoriju'.
Code:
static vector<T> mem;


Sad vise ne pokazujes s pokazivacima nego s int-om.

Add bi izgledao ovako nesto:
Code:
Cvor Add( T x )
{
    mem.push_back( x );
    return Cvor( mem.size()-1 );
};


Samo stvar jezicne konstrukcije i primjera radi. Hocu reci nije pametno...
 
Odgovor na temu

rumpl

Član broj: 54959
Poruke: 156
*.net81-66-199.noos.fr.



Profil

icon Re: Pokazivaci(eng. pointeri)06.12.2006. u 09:05 - pre 211 meseci
Pa cekaj, ovo nije C...
"The problem with the world is that everyone is a few drinks behind."
-Humphrey Bogart
 
Odgovor na temu

NrmMyth
Ivan Maček
Split

Član broj: 63456
Poruke: 849
*.adsl.net.t-com.hr.

Sajt: www.dump.hr


Profil

icon Re: Pokazivaci(eng. pointeri)06.12.2006. u 09:25 - pre 211 meseci
ista stvar je...
 
Odgovor na temu

[es] :: C/C++ programiranje :: Pokazivaci(eng. pointeri)

Strane: 1 2

[ Pregleda: 12779 | Odgovora: 32 ] > FB > Twit

Postavi temu Odgovori

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