Hejsan! Japp. Ja, det är just det som malloc är till för. Så char **array kan alltså ses som en array/vektor men som i realiteten är deklarerad som en pekare till en pekare? Eller hur kan man bäst beskriva läget? Ja, char ** kan ses som antingen en array med pekare till char, eller en pekare till en pekare till char. Det senare är ju den mer direkta tolkningen.[C-programmering] Minnesallokering
jag vill kunna skapa en array/vector enligt följande:
int i = 10;
char *array[i];
Dock klagar kompilatorn om att värdet i inte är en konstant. Kan man gå runt detta problem med hjälp av minneshantering, typ malloc/calloc?
// NickeSv: [C-programmering] Minnesallokering
int i = 10;
char **array = (char**) malloc(i * sizeof(char*));
Sv: [C-programmering] Minnesallokering
Kommer inte ihåg gamla C-syntaxen (om du har möjlighet är det väsentligt mycket bättre att använda C++ istället, coh där köra med new resp. delete), men något i den här stilen är det:
int i = 10;
char *array;
int *intarray;
array=(char*)malloc(i);
intarray=(int *)malloc(i*sizeof(int));
free(array);
free(intarray);
Observera att malloc ger ifrån sig en void-array eller char-array eller något i den stilen, som du måste casta rätt, och sen vill den ha storleken i antalet byte (byte definierat som storleken av en char).
Sv:[C-programmering] Minnesallokering
// nickeSv: [C-programmering] Minnesallokering