webForumDet fria alternativet

<unknown> missing subscript

3 svar · 278 visningar · startad av pettsson

pettssonMedlem sedan jan. 2002777 inlägg
#1

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
#2

Din deklaration borde istället se ut så här:

void DealNew(int (*K)[_storlek_]);
pettssonMedlem sedan jan. 2002777 inlägg
#3

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
#4

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 :)

Genererad på 379 ms · cache AV · v20260730165559-full.f96bc7eb