I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Hvis en funktion skal kunne modificere et argument så den der kalder funktionen kan se det må man give funktionen en pointer (eller reference) til variablen;
void f(TYPE *i) { *i = whatever; }
Hvis man giver f en normal variabel vil den modificere sin kopi af variablen.
I dit tilfælde er TYPE en int *, så din init skal have en pointer til en int *: void init(int **p) { *p = (int*)malloc(sizeof(int)); if (*p == NULL) fatalerror(".."); }
int main() { int *p; init(&p); destroy(p); }
Destroy behøver ikke få en int **, den modificerer ikke pointeren.
Jeg vil gerne starte med en int p (ift. for hvor jeg for havde en int *p) og saa lave en init og destroy funktion der har typen init(int *p) og destroy(int *p). Udfra bertels eksempel ville jeg tro det blot var at gaa et skridt "tilbage" (altsa **p = *p og *p = p) men saa giver free fejl.
Det er vel Bertel der har trukket det tunge læs, men et kig i min glas kugle siger at han nok ikke vil have point, så ...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.