hvad er forskellen mellem prepositionerne in og into?
’in’ beskriver en location (f.eks in the cinema, in the house), ’into’ beskriver en bevægelse frem, en process (f.eks walk into the house, you do not simply walk into mordor,…).
forskellen mellem ’in’ og ’into’ afhænger af om det handler sig om en bevægelse. ’into’ bruges når nogen eller noget går til et andet sted. ’in’ bruges for at beskrive hvor man er lige i øjeblikket.
Læs den baglæns (som styret af [Clockwise/Spiral Rule](http://c-faq.com/decl/spiral.anderson.html)):


* `int*` - pegepind til int
* `int const *` - pegepind til const int
* `int * const` - const pointer til int
* `int const * const * const` - const pointer til const int


Nu kan den første `const` være på begge sider af typen, så:


* + == `int const *`.
* `const int * const` == `int const * const`


Hvis du vil gå helt amok, kan du gøre ting som dette:


* `int **` - pegepind til pegepind til int
* `int ** const` - en const pegepind til en pegepind til en int
* `int * const * *` - en pointer til en const pointer til en int
* `int const **` - en pegepind til en pegepind til en const int
* `int * const * * const` - en const pegepind til en const pegepind til en int
* ...


Og for at sikre os, at vi har forstået betydningen af const



```
const int* foo;
int *const bar; //note, you actually need to set the pointer 
                //here because you can't change it later ;)
```

`foo` er en variabel pegepind til et konstant heltal. Dette giver dig mulighed for at ændre det, du peger på, men ikke den værdi, du peger på. Oftest ses dette med C-style strings hvor du har en pointer til en `const char`. Du kan ændre hvilken streng du peger på, men du kan ikke ændre indholdet af disse strings. Dette er vigtigt, når selve strengen befinder sig i datasegmentet i et program og ikke bør ændres.


`bar` er en konstant eller en fast pointer til en værdi, der kan ændres. Dette er ligesom en reference uden det ekstra syntaktiske sukker. På grund af dette faktum vil man normalt bruge en reference, hvor man ville bruge en `T* const` pointer, medmindre man har brug for at tillade `NULL` pointers. indgriben ja, det er korrekt, flere enheder kræver seperat log in. **Nej**; du *kaster ikke* resultatet, da:


* Det er unødvendigt, da `void *` automatisk og sikkert promoveres til enhver anden pointertype i dette tilfælde.
* Det tilføjer rod i koden, casts er ikke særlig lette at læse (især hvis pointertypen er lang).
* Det får dig til at gentage dig selv, hvilket generelt er dårligt.
* Det kan skjule en fejl, hvis du har glemt at inkludere `<stdlib.h>`. Dette kan forårsage nedbrud (eller, endnu værre, *ikke* forårsage et nedbrud før langt senere i en helt anden del af koden). Tænk på hvad der sker hvis pointere og integers har forskellig størrelse; så skjuler du en advarsel ved at caster og kan miste bits af din returnerede adresse. Bemærk: fra og med C99 er implicitte funktioner forsvundet fra C, og dette punkt er ikke længere relevant, da der ikke længere er nogen automatisk antagelse om, at udeklarerede funktioner returnerer `int`.


Som en præcisering skal du bemærke, at jeg sagde "du skal ikke caste", ikke "du *behøver* ikke at caste". Efter min mening er det en fejl at inkludere cast, selv hvis du har det rigtigt. Der er simpelthen ingen fordele ved at gøre det, men en masse potentielle risici, og at medtage gipsen indikerer, at du ikke kender til risiciene.


Bemærk også, som kommentatorer påpeger, at ovenstående taler om ren C, ikke C++. Jeg tror meget stærkt på C og C++ som separate sprog.


For yderligere at tilføje, at din kode unødigt gentager typeoplysningerne (`int`), hvilket kan forårsage fejl. Det er bedre at de-referere den pointer, der bruges til at gemme returværdien, for at "låse" de to sammen:



```
int *sieve = malloc(length * sizeof *sieve);
```

Dette flytter også `length` til forsiden for at øge synligheden, og dropper de overflødige parenteser med `sizeof`; de *er kun nødvendige* når argumentet er et typenavn. Mange mennesker synes ikke at vide (eller ignorerer) dette, hvilket gør deres kode mere omstændelig. Husk: `sizeof` er ikke en funktion! :)







Selvom det *kan* øge synligheden i nogle sjældne tilfælde at flytte `length` foran, bør man også være opmærksom på, at det i det generelle tilfælde bør være bedre at skrive udtrykket som:



```
int *sieve = malloc(sizeof *sieve * length);
```

Da det at holde `sizeof` først, i dette tilfælde, sikrer, at multiplikationen udføres med mindst `size_t` matematik.


Sammenlign: Sammenlign: `malloc(sizeof *sieve * length * width)` vs. `malloc(length * width * sizeof *sieve)` den anden kan overløbe `length * width` når `width` og `length` er mindre typer end `size_t`. det skal være på seperate kundenumre, et kundenummer = et log in. primoposteringen er balancen dvs. afstemningen af aktiver og passiver. det er din slutsaldo i årsregnskabet, som bliver overført til næste regnskabsperiode. kampen ligger i to dele :) stå inde for det kan ikke gøres, der er kun et login, medmindre det er seperate kundenumre. et log in er = en bruger af gangen. hejokay det lyder godt nok mærkelig men det er da en hjælp til andre... tak for indput.