Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 32 odgovora
  • 17.139 pregleda

Najnovija ↓

Re: Pokazivaci(eng. pointeri) 20.04.2006. u 20:30 · pre 250 meseci #21
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
Re: Pokazivaci(eng. pointeri) 24.11.2006. u 01:00 · pre 243 meseca #22
Da li je pozeljno uvek alocirati memoriju za svaki pokazivac ?
Re: Pokazivaci(eng. pointeri) 24.11.2006. u 15:52 · pre 243 meseca #23
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.
Potpis
"The problem with the world is that everyone is a few drinks behind."
-Humphrey Bogart
Re: Pokazivaci(eng. pointeri) 24.11.2006. u 16:13 · pre 243 meseca #24
@ 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.
Potpis
De si Deda...
Re: Pokazivaci(eng. pointeri) 25.11.2006. u 00:35 · pre 243 meseca #25
Ja bih rekao da ne obicne liste ne mogu da se urade bez pointera.
Potpis
"The problem with the world is that everyone is a few drinks behind."
-Humphrey Bogart
Re: Pokazivaci(eng. pointeri) 26.11.2006. u 16:14 · pre 243 meseca #26
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.
Potpis
De si Deda...
Re: Pokazivaci(eng. pointeri) 26.11.2006. u 18:38 · pre 243 meseca #27
Pa ono, ne cirkularne, double linked i to.
Obicne... Najobicnije... :D
One sto vas uce prvo na faksu
Potpis
"The problem with the world is that everyone is a few drinks behind."
-Humphrey Bogart
Re: Pokazivaci(eng. pointeri) 26.11.2006. u 21:07 · pre 243 meseca #28
Najjednostavnija:

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


Znaci - nema jednostavnije, a da ja znam za to.
Potpis
De si Deda...
Re: Pokazivaci(eng. pointeri) 27.11.2006. u 00:51 · pre 243 meseca #29
To.
Potpis
"The problem with the world is that everyone is a few drinks behind."
-Humphrey Bogart
Re: Pokazivaci(eng. pointeri) 05.12.2006. u 20:29 · pre 242 meseca #30
@ NrmMyth : Ja jos uvek cekam tvoj primer lista bez pointera...
Potpis
"The problem with the world is that everyone is a few drinks behind."
-Humphrey Bogart
Re: Pokazivaci(eng. pointeri) 05.12.2006. u 23:25 · pre 242 meseca #31
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...
Re: Pokazivaci(eng. pointeri) 06.12.2006. u 10:05 · pre 242 meseca #32
Pa cekaj, ovo nije C...
Potpis
"The problem with the world is that everyone is a few drinks behind."
-Humphrey Bogart
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme