/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
const const
Fra : Troels Thomsen


Dato : 10-05-04 13:09


Jeg har leget lidt med const definitioner i funktions-hoveder

void someFunc(const char* const p1)
{
*p1 = 4; // error pga den ene const
p1++; // errror pga den anden const
}

så prøvede jeg det samme med char arrays men synes at flg virker ens
const char asdf[] // asdf[2] = 2 ulovlig
char const asdf[] // asdf[2] = 2 ulovlig

og ingen af dem gør assignment af array-basen / pointeren ulovlig
asdf++; // lovlig uanset hvilken const definition man bruger.

Det kan man åbenbart ikke ?

mvh Troels



 
 
Ivan Johansen (10-05-2004)
Kommentar
Fra : Ivan Johansen


Dato : 10-05-04 14:04

Troels Thomsen wrote:
> Jeg har leget lidt med const definitioner i funktions-hoveder
>
> void someFunc(const char* const p1)
> {
> *p1 = 4; // error pga den ene const
> p1++; // errror pga den anden const
> }

Korrekt. Generelt læses definitionen fra højre mod venstre, f.eks.:
char const *p1; //Pointer til konstant char
char * const p2; //Konstant pointer til char
char const * const p3; //Konstant pointer til konstant char

En ekstra regel er dog at hvis der ikke står noget til venstre for
const, så er const knyttet til det som står til højre. Disse er derfor ens:
char const *p4; //Pointer til konstant char
const char *p5; //Pointer til konstant char

> så prøvede jeg det samme med char arrays men synes at flg virker ens
> const char asdf[] // asdf[2] = 2 ulovlig
> char const asdf[] // asdf[2] = 2 ulovlig

Ja, de er ens da const i begge tilfælde er knyttet til char.

> og ingen af dem gør assignment af array-basen / pointeren ulovlig
> asdf++; // lovlig uanset hvilken const definition man bruger.
> Det kan man åbenbart ikke ?

Nej, det tror jeg ikke kan lade sig gøre array syntaks, men en pointer
og et array som argument til en funktion er det samme, så du kan lige så
godt bruge pointer syntaks.

Ivan Johansen

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408915
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste