Gå til innhold

C++ problemer når jeg bruker static


Anbefalte innlegg

#include <iostream>
using namespace std;

void lol();
int main(int numberofargs, char* psyz[])
{

cout<<"The password is: ";

lol();
cout<< password;
}


void lol()
{
   static int password=144;
}

Hvorfor blir ikke 144 printet ut ? Skal ikke static gjøre variabelen tilgjengelig utenfor dens function ?

Lenke til kommentar
Videoannonse
Annonse

Nei. static gjør (i denne sammenhengen) at tallet fortsetter å eksistere i funksjonen gjennom hele programmet, i stedet for å bli skapt på nytt hver gang funksjonen kalles.

 

Hvis du skriver:

 

#include <iostream>

int lol();

int main()
{
    std::cout << "The password is: " << lol() << std::endl;
}

int lol()
{
    static int password = 144;
 return password;
}

 

vil programmet gjøre som du forventer.

 

 

(NB: Det er vanlig høflighet (eller konvensjon, om du vil) å kalle argumentene til main() for hhv. argc (argument count) og argv (argument vector).)

 

Edit: Hadde forskjellig returtyper på prototype og definisjon av lol()

Endret av Myubi
Lenke til kommentar

Tja... du kan jo lage et pogram som regenererer seg selv med hardkodede verdier for de variablene du ønsker skal være persistente. Så må programmet erstatte sin egen lagrede originalkode med den nye før det terminerer.

 

Eyh, Myubi, TheGreatDebate er definitivt en av de artigste låtene fra SDIT ;-)

Lenke til kommentar
Går det an og lagre data i en variabel som blir der uansett om programmet er avsluttet?

Hva slags data er det du ønsker å lagre, og for hvor lenge?

 

Hvis du kan bruke en int, så kan du bruke returverdien fra main(). Spørsmålet så blir hvorvidt OSet du bruker tar vare på denne verdien, og hvor lenge den i så fall er tilgjengelig.

 

Det ville vel strengt tatt være enklere å lagre verdiene til en fil som du så kan aksessere hver gang du kjører programmet for å hente inn og skrive ut de data du måtte ønske å ta vare på...

Lenke til kommentar
Det ville vel strengt tatt være enklere å lagre verdiene til en fil som du så kan aksessere hver gang du kjører programmet for å hente inn og skrive ut de data du måtte ønske å ta vare på...

Joda, men hva slags filer er det mest vanlig å lagre data på da? regner med at det ikke er .txt filer?

Lenke til kommentar
Det ville vel strengt tatt være enklere å lagre verdiene til en fil som du så kan aksessere hver gang du kjører programmet for å hente inn og skrive ut de data du måtte ønske å ta vare på...

Joda, men hva slags filer er det mest vanlig å lagre data på da? regner med at det ikke er .txt filer?

Spørs jo helt på hva slags detaljer du skal lagre.

Er det programinnstillinger, så pleier disse ofte å være lagret i akkurat tekstfiler, ofte med endelsen .ini eller .cfg.

Hva slags endelse du bruker på filene er egentlig helt opp til deg, men det finnes jo en viss etikette. (Ikke bruke .exe på tekstfiler osv.)

Lenke til kommentar

Dersom du skal gjøre det selv uten å bruke noen andres biblioteker (unntatt std bibliotekter), så lager du gjerne en klasse som bruker fstream osv, ja.

Hva filen heter velger du når du bruker std::fstream::open(NAVN_HER), og da kan NAVN_HER være nesten hva du vil, f.eks. innstillinger.ini, eller innstillinger.bin om du vil.

Endret av Nazgul
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...