27. januar 2002 - 22:52Der er
4 kommentarer og 2 løsninger
i = new long [1][1] ?
Hvorfor kan jeg gøre sådan her: long *i; i = new long[123]; men ikke i = new long[123][123];
?
Hvad skal jeg gøre for at få det sidste til at lykkedes og hvad kalder man det entligt når man omdefinerer en variabel på den her måde med new (type) ?
Og for lige at svare på dit andet spørgsmål: Man kalder det såmænd ikke noget, "når man omdefinerer en variabel på den her måde med new (type)", for det kan man ikke.
"new" returnerer en pointer til noget hukommelse, der nu er reserveret til dit program. Det er din opgave, at sørge for at bruge hukommelsen rigtigt (dvs. enten lade din pointer pege på en type, som svarer til den du har angivet til "new" ELLER typecaste resultatet fra new til den type pointer du bruger).
F.eks. kan du godt gøre således (hvis du synes det er sjovt...)
char *s;
s = (char *)new long[123][123];
En alternativ måde at reservere 15129 bytes til en streng...
En 'new long[123][123]' er et TO-dimensionelt array, mens 'long *i' er en pointer til eet element. (Som jo KAN være starten på et array som i new long[123].) Derfor får du ikke lov at caste variablen 'i' til long[][]. Grundlæggende set skal definitionen af din variabel, og det der står efter 'new' altså være ens. Men så er det jo lige at i C giver følgende definitioner samme resultat:
long **i; long *i[]; long[] *i; long[][] i;
idet * og [] kan bruges i stedetfor hindanden, når vi taler om pointere og arrays af en given type.
long (*lp)[10]; er en ren erklærering, der allokeres intet array her.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.