[ Mikky @ 01.10.2001. 23:00 ] @
1.
deklaracija funkcije malloc je void *malloc(size_t size)
nije mi jasno sta ova funkcija vraca, pointer ka voidu wtf?
da li je ova funkcija ekvivalenta "new" u c++

2.
zasto se skoro uvek funkcijama kao parametar predaju
pointeri ka strukturama/klasama a ne same strukture/klase?

3.
dali svaki win program kada se pravi mora da ima WndClassEx
strukturu... odnosno da li svaki windows program mora da sadrzi prozor (nevazno da li se taj prozor vidi na ekranu ili ne)

4.
ako npr. pomocu resource editora napravim GUI za neki svoj program
kako se taj resource fajl povezuje posle sa c/c++ kodom ?
znaci npr. u resource editoru napravim prozor sa buttonom.... pa bi zatim u c/c++ odradim da na pritisak buttona prikaze MsgBox

znaci bezveze primer cisto da provalim kako se to uklapa
posto imam kompajler za win32 bez IDE-a i resource editora a pravljenje GUI je jako naporno preko API funkcija
[ Vojislav Milunovic @ 02.10.2001. 02:47 ] @
Citat:
Mikky je napisao:
1.
deklaracija funkcije malloc je void *malloc(size_t size)
nije mi jasno sta ova funkcija vraca, pointer ka voidu wtf?
da li je ova funkcija ekvivalenta "new" u c++


Otprilike da to je ekvivalentno new u C++. Ona vraca pokazivac na memoriju. void * je dobar zbog castinga. Neces dobijati warninge da na char * predajes int vrednost. Inace malloc() alocira memoriju za size_t size i vraca adresu pocetka alocirane memorije.

Citat:

2.
zasto se skoro uvek funkcijama kao parametar predaju
pointeri ka strukturama/klasama a ne same strukture/klase?


Zato sto je mnogo elegantnije raditi sa pointerima ;o) veruj mi pointeri su ono sto cini C jako fleksibilnim evo kod koji radi isto :

Code:

struct gg{
int a,b;
};

int str(struct gg voja){
 printf("%dn",voja.a);
 printf("%dn",voja.b);
 return 0;
}

int main(){
 struct gg voja = {0,1};
 str(voja);
}         


i pointeri

Code:

struct gg{
int a,b;
};

int str(struct gg* voja){
 printf("%dn",voja->a);
 printf("%dn",voja->b);
 return 0;
}

int main(){
 struct gg voja = {0,1};
 str(&voja);
}           




[ tweeester @ 02.10.2001. 10:55 ] @
Napomena: Ako se dobro secam, nece uspeti pokusaj da prosledis strukturu duzu od 8 bajtova kao parametar, zato moras da prosledis samo pokazivac na tu strukturu.

[ Milan Aksic @ 02.10.2001. 11:24 ] @
Citat:

2.
zasto se skoro uvek funkcijama kao parametar predaju
pointeri ka strukturama/klasama a ne same strukture/klase?


Iglavnom zato jer se strukture i clanovi struktura predaju po vrednosti:
Code:

struct test
{
    int x, y;
};

void fun1(struct test);

void main(void)
{
    struct test kor;

  kor.x = 10;
  kor.y = 20;

  fun1(kor);

  printf("po povratku iz funkcije fun1n");
  printf("%dn", kor.x);
  printf("%dn", kor.y);
}

void fun1(struct test stest)
{
    printf("%dn", stest.x);
  printf("%dn", stest.y);
  stest.x = 55;
  stest.y = 66;
  printf("%dn", stest.x);
  printf("%dn", stest.y);
}
[ Vojislav Milunovic @ 02.10.2001. 18:43 ] @
Citat:
tweeester je napisao:
Napomena: Ako se dobro secam, nece uspeti pokusaj da prosledis strukturu duzu od 8 bajtova kao parametar, zato moras da prosledis samo pokazivac na tu strukturu.



Ima neki trip, ja sam licno mislio da ne moze vise od 4byte da se preda ;o)
[ Dejan Lozanovic @ 02.10.2001. 19:31 ] @
Citat:
Mikky je napisao:
2.

zasto se skoro uvek funkcijama kao parametar predaju

pointeri ka strukturama/klasama a ne same strukture/klase?


Pa neko je rekao jer se u obicnom slucaju prenose po vrednosti, e fora je u tome sto funkcije uvek kopiraju argument, bilo to tipa int, char, pointer na nesto... ili neka struktura/klasa itd.. poenta je u tome sto krace kopiranje jedne vrednosti nego 10 ili vise, a sada zamisli da je tvoja klasa jedna velika lista sta mislis koliko to vremena da se sve to prekopira(preko copy konstruktora), opet sam pointer je mozda malo nepraktican zbog pisanja jer uvek vrednosti pristupas kao (*nesto), zato je elegantije koristiti referencu (konstantni pokazivac) barem kada je c++ u pitanju.


Nadam se da sam razjasnio muku