100 likes | 251 Views
Süsteemprogrammeerimine keeles C ja C#. Kaheksas loeng. Sisend väljund eri C-des. printf versus cout versus Console.WriteLine printf(“Minu number %d <br>”, 7); cout << “Minu number “ << 7 << ´<br>´ ; Console.WriteLine(“Minu number {0}”,7); sarnasused teevad sama asja erinevused
E N D
Süsteemprogrammeerimine keeles C ja C# Kaheksas loeng
Sisend väljund eri C-des • printf versus cout versus Console.WriteLine • printf(“Minu number %d \n”, 7); • cout << “Minu number “ << 7 << ´\n´ ; • Console.WriteLine(“Minu number {0}”,7); • sarnasused • teevad sama asja • erinevused • printf, writeline – funktsioonid • cout – klass, << operaator
cout ja printf kasutamine • #include <stdio.h> • #include <iostream.h> • cout, cerr, clog, cin – neli klassi • cout – caracter output, standardväljund • cerr – error output, veateated • clog – logiväljund • cin – standardsisend • KÕIKI SAAB REDIRECTIDA (paipida)
FILE - 1 • kirjeldatud <stdio.h> void main() { FILE *fp; if ((fp=fopen("c:\\Jabur.txt", "r")) != NULL) printf(“Avasime\n"); else printf(“Ei avanud\n"); }
FILE – 2 • fp=fopen(“failinimi”, “r” või “w”); • fclose(fp); • while(symbol = fgetc(fp)) != EOF) {...} • char fgetc(fp) • fputc(fp, char) • fgets(char x, int limit, FILE *fp); • fputs(const char x, FILE *fp); • Failide juurde tuleme pikemalt tagasi
Mälu ja sellega toimetamine • Stäkk ja Heap (pinu ja kuhi) • Stäkk – LIFO struktuur, kuhu pannakse • funktsiooni tagasipöördumisaadress • parameetrite väärtused • lokaalsed muutujad • tagasiteel puhastatakse • Heap on mälupiirkond • süsteem haldab • saab mälu küsida, vabastada jne • vastutad ise
Mälu eraldamine stäkist • Automaatselt (funktsioonid) • klass x = klass(...); • void * v = _alloca(int suurus); • MÄLU VABASTATAKSE AUTOMAATSELT!
Mälu eraldamine kuhjast • malloc(int suurus); // mitte int vaid size • calloc(int mitu, int suurus); • _expand(void *, int suurus); • realloc(void *, int suurus); • new operaator! • MÄLU VABASTAMINE SINU KOHUSTUS!
Mälu eraldamise ja vabastamise viise • new ja delete: • klass x = new klass(...); • delete x • malloc ja free • char *buff = (char*)malloc(2000); • free(buff);
Muid mälu vabastamise tehnikaid • COM • igal klassis on meetod, mis loendab viitamisi • kui viitamised otsas, laseb ise end maha • .NET • loendab viitamised • koristaja koristab • remoting ja sponsorid • IDISPOSABLE