webForumDet fria alternativet

<unknown> missing subscript

C/C++

3 svar · 278 visningar · startad av pettsson

Medlem sedan jan. 20021 122 inlägg
Frågan#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?

Medlem sedan juni 200010 432 inlägg
#2

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

void DealNew(int (*K)[_storlek_]);
Medlem sedan jan. 20021 122 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?

Medlem sedan juni 200010 432 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 :)

264 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)