Felmeddelandet ovan får jag där jag har följande kod:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
char c[4][4] = {
{'a','b','c','d'},
{'d','c','b','a'},
{'c','d','a','b'},
{'b','a','d','c'}
};
Jag får också varningar om "warning: address of local variable 's' returned"
Det tolkar jag som att addressen till strängen returneras? Koden jag får felmeddelandet på ser ut så här:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
void abc(const char* a) {
char s[strlen(a) + 1]; <-- Här får jag felet
// MER KOD HÄR EGENTLIGEN
}
Vad beror dessa felmeddelanden på?
------------------
---
/* LilleSkutt */
[Redigerat av LilleSkutt den 19 nov 2001]
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
char s[strlen(a) + 1]; <-- Här får jag felet
Det där funkar liksom inte. När du skapar en array så måste kompilatorn veta hur stor arrayen skall vara vid kompileringen. När du gör sådär så kan inte kompilatorn veta hur stor den skall göra arrayen, eftersom värdet av strlen(a) kan variera (det som står innom [ ] måste vara konstant). Nåt sånt här borde funka:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
char *s = malloc(sizeof(char) * strlen(a) + 1));
if(s == NULL) return -1;
------------------
"If God had wanted you to wear earrings, he'd have made you a girl." - Alabama Governor Don Siegelman :e
[Redigerat av Muzzafarath den 20 nov 2001]