Beste C++ programmeurs,
Ik ben onlangs begonnen met het proberen te doorgronden van C++.
Ik heb namelijk de source code van een online game gedwonload die ik wil gaan hosten.
Ik heb de game al draaiend echter wil ik het een en ander aanpassen.
Ik heb zelf wat PHP ervaring echter die pointers uit C++ kon ik nog niet.
Bij het gedownloade spel zitten een antal files ik zal even 1 module uitlichten zodat ik misschein wat meer inzicht krijg hoe het in zijn werk gaat.
Wat ik hier bijvoorbeeld niet helemaal snap is:
Waar staat die "i" voor ? is dit 0 want ik ken de expressies i++ wel enzo voor loops maar i heeft hiervoor ook geen waarde toegekend gekregen ofzo ?
Daarnaast snap ik ook niet precies het volgende:
waarom staat hiervoor ook die rc_class en waarom worden er 2 asterixen (**) gebruik en niet 1 (*) voor een pointer ?
Ik hoop dat jullie me er verder mee kunnen helpen!
Alvast bedankt!
pMzQ,
Ik ben onlangs begonnen met het proberen te doorgronden van C++.
Ik heb namelijk de source code van een online game gedwonload die ik wil gaan hosten.
Ik heb de game al draaiend echter wil ik het een en ander aanpassen.
Ik heb zelf wat PHP ervaring echter die pointers uit C++ kon ik nog niet.
Bij het gedownloade spel zitten een antal files ik zal even 1 module uitlichten zodat ik misschein wat meer inzicht krijg hoe het in zijn werk gaat.
Code:
typedef struct rc_class_struct {
unsigned int id;
unsigned int block_id;
unsigned int rc_id;
unsigned int next_id;
unsigned int next_alt_id;
unsigned int type;
char * name;
} rc_class;
rc_class **get_rc_class (MYSQL *mysql)
{
MYSQL_RES *res;
MYSQL_ROW row;
int num, high_id = 0, i;
rc_class **ret = NULL;
rc_class *rcc = NULL, *rc_class_ptr;
debug (1, "get_rc_class");
res = do_query (mysql,"SELECT id, block_id, rc_id, name, type " \
"FROM rc_class ORDER by id ASC");
if (res && (num = mysql_num_rows(res))) {
rcc = calloc (sizeof(rc_class), num+1);
assert (rcc);
rc_class_ptr = rcc;
while ((row = mysql_fetch_row (res)) ) {
rc_class_ptr->id = atoi(row[0]);
rc_class_ptr->block_id = atoi(row[1]);
rc_class_ptr->rc_id = atoi(row[2]);
rc_class_ptr->name = strdup (row[3]);
rc_class_ptr->type = atoi(row[4]);
if (rc_class_ptr->id > high_id)
high_id = rc_class_ptr->id;
rc_class_ptr++;
}
rc_class_ptr->id = 0;
check_error (mysql);
mysql_free_result(res);
/*
* fprintf (logfile, "Found high_id=%d\n",high_id);
*/
ret = calloc (sizeof(rc_class *), high_id+1);
assert (ret);
for (i=0; i<num; i++) {
/*
* fprintf (logfile, "Assigning %d -> [%d]\n",i, (rcc+i)->id);
*/
ret[(rcc+i)->id] = rcc+i;
}
for (i=0; i<num; i++) {
/*
* fprintf (logfile, "Reverse %d -> %d : %d\n",
* i, (rcc+i)->rc_id, (rcc+i)->id);
*/
if ( (rcc+i)->rc_id && ret[(rcc+i)->rc_id]) {
if ( ret[(rcc+i)->rc_id]->next_id != 0 )
ret[(rcc+i)->rc_id]->next_alt_id = (rcc+i)->id;
else
ret[(rcc+i)->rc_id]->next_id = (rcc+i)->id;
}
/*
if ( (rcc+i)->rc_id && ret[(rcc+i)->rc_id])
ret[(rcc+i)->rc_id]->next_id = (rcc+i)->id;
*/
}
}
return ret;
}
Wat ik hier bijvoorbeeld niet helemaal snap is:
Code:
int num, high_id = 0, i;
Waar staat die "i" voor ? is dit 0 want ik ken de expressies i++ wel enzo voor loops maar i heeft hiervoor ook geen waarde toegekend gekregen ofzo ?
Daarnaast snap ik ook niet precies het volgende:
Code:
rc_class **get_rc_class (MYSQL *mysql)
waarom staat hiervoor ook die rc_class en waarom worden er 2 asterixen (**) gebruik en niet 1 (*) voor een pointer ?
Ik hoop dat jullie me er verder mee kunnen helpen!
Alvast bedankt!
pMzQ,