Merkkijonoa kuvaava...

Onko c siten että jos tarkoitetaan tyhjää se on aina 'null' ja jos on merkkijono (mikä tahansa) niin se on " ". vai voiko sen sijaan käyttää jotakin muuta merkintää?
4249
Äänestä

Muut lukivat myös

Vastaukset 4

Vanhimmat

En ole nyt aivan varma mitä tarkoitat mut koitetaan.. olkoot aikka kaks muuttujaa:
char *a = "";
char *b = NULL;

Muuttuja a osoittaa muistipaikkaa, jossa on pelkkä nollamerkki. Merkkijonon pituus on nolla, mutta merkkijono on kuitenkin olemassa.

Muuttujan b arvo on nolla, sitä siis "ei ole määritelty", se ei osoita mitään paikkaa muistissa jossa merkkijono voisi olla.

Äänestä
  • 'char *a = "";

    Muuttuja a osoittaa muistipaikkaa, jossa on pelkkä nollamerkki. Merkkijonon pituus on nolla, mutta merkkijono on kuitenkin olemassa. '

    On olemassa niin kauan kun jokin muu kirjoittaa kyseiseen muistipaikkaan. Kyseessähän on alustamaton pointteri, jonka osoittaman datan pysyvyys on pelkästä tuurista kiinni.

    NULL on siis määritelty vakio joka on aina nolla.
    char *b=0 tarkoittaa samaa kuin edelläkin oli mainittu.

    Äänestä

  • .... kirjoitti:

    'char *a = "";

    Muuttuja a osoittaa muistipaikkaa, jossa on pelkkä nollamerkki. Merkkijonon pituus on nolla, mutta merkkijono on kuitenkin olemassa. '

    On olemassa niin kauan kun jokin muu kirjoittaa kyseiseen muistipaikkaan. Kyseessähän on alustamaton pointteri, jonka osoittaman datan pysyvyys on pelkästä tuurista kiinni.

    NULL on siis määritelty vakio joka on aina nolla.
    char *b=0 tarkoittaa samaa kuin edelläkin oli mainittu.

    Niin itseasiassa:
    char* a = "";

    On sama kuin

    char a[1] = { '\0' };

    Eli toi a osoittaa staattiseen varattuun muistiin. Merkkojonon pituus siis on nolla mutta itse taulukon koko on 1.

    C :ssa toi pitäisi muutenkin kirjoittaa
    char const* a = ""; kun siinä nuo on automaattisesti char const* -tyyppisiä.

    Äänestä

ja sitten :
int main()
{
int c=0;
c++;
c++;
c++;
printf("%d\n",c);
return 0;
}

Äänestä

Kommentoi aloitusta


dfafd kirjoitti:

Onko c siten että jos tarkoitetaan tyhjää se on aina 'null' ja jos on merkkijono (mikä tahansa) niin se on " ". vai voiko sen sijaan käyttää jotakin muuta merkintää?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu