pettssonMedlem sedan jan. 2002777 inlägg
Får det felmeddelandet när jag försöker initiera en funktion som tar en pekare till en tvådimensionell vektor som argument. Om det fungerar som jag tror borde jag skriva såhär:
void DealNew(int *K[][]);
Innan jag lade koden i en egen funktion fungerade allt fint, så felet måste ligga i själva funktionsdefinitionen. Förstår inte vad felet betyder heller... Vad är en subscript?
PeWMedlem sedan juni 20006 839 inlägg
Din deklaration borde istället se ut så här:
void DealNew(int (*K)[_storlek_]);
pettssonMedlem sedan jan. 2002777 inlägg
Så om min array är 4 * 13 element stor ska jag deklarera så här?
void DealNew(int (*K)[52]);
Varför ska man sätta *K inom paranteser?
PeWMedlem sedan juni 20006 839 inlägg
Parantesen är till för att övertyga kompilatorn om att det är pekare till en array som avses. Det är inte säkert att det behövs i en del kompilatorer, men är syntaktiskt riktigt och borgar för att det fungerar i alla kompilatorer. Det finns olika sätt att sända över matriser till funktioner, det enda viktiga man bör ha i åtanke är hur en matris ser ut i datorns minne. Dvs en enda rad av allokerade minnesadresser. Så man skulle även kunna nöja sig med att skicka en pekare till matris[0][0] och sen hålla reda på offset via ytterligare en variabel, alternativt ha en pekare till pekare.
Sök i forumet eller på google om mer information. Detta är en ständigt återkommande fråga :)