Zeiger 2

Zeiger sind eine richtige Geheimwaffe in C++.

//varaddr nach Lafore S. 557

#include <iostream>

using namespace std;

 

int main()

{

int variable1 = 111;

int variable2 = 222;

int variable3 = 333;

cout << &variable1 << " " << variable1;

cout << endl << &variable2 << " " << variable2;

 

int* ptr; //Zeiger auf int

ptr = &variable3;

cout << endl << ptr << " " << variable3;

return 0;

}

 

Dieses obige Programm gibt einfach nur drei Adressen und drei Werte aus.



Anwendung dieser Zeiger

//queue.cpp nach Herold,Lurz,Wohlrab S.350
#include <iostream> //cout<<
#include <conio.h> //getch()
using namespace std;
struct element
 {
     int zahl;
     element * next;
 }; //struct element
element * anfang = NULL;
element * ende = NULL;
int anzahl = 0;
//Funktion isEmpty():
bool isEmpty()
 {
     return anzahl==0;
 }
//Funktion put(...):
void put(int wert)
 {
    element * neu = new(element);//Speicherplatz stellen
    neu->zahl = wert;
    neu->next = NULL;
    if ( isEmpty() )
      anfang = neu;
    else
      ende->next = neu;
    ende = neu;
    anzahl ++;       
 }//Funtion put()
//Funktion get()
int get()
 {
     int wert;
     element * cursor = anfang;
     if ( isEmpty())
      {
          cout <<endl<< "Queue ist leer.";
          return -1;
     }//if
    anfang = anfang->next;
    if ( anfang == NULL )
      ende = NULL;
    wert = cursor->zahl;
    delete(cursor);//Speicherplatz freigeben
    anzahl --;
    return wert;         
}   //get()
int main() //Hauptprogramm
 {
     for (int i=1; i<=9; i++)
       put(i);
    for (int j=0; j<=9; j++)
      cout <<endl<< get();
    cout << endl << "Taste!";
    getch();
    return 0; 
 }    //main()