Zeiger

Zeiger sind die schwerer zu verstehenden "Tricks" in diesen Programmiersprachen wie C und C++ (Java kommt ohne Zeiger aus.). Guter Linktipp zu einer ganz kleinen Webseite - Thema Zeiger.

Das Wichtigste zum Verständnis von Zeigern ist wohl, dass man weiß: Variablen können auch durch ihre Adresse angesprochen werden.

Dass Variablen über ihre Position identifiziert werden können, liegt an der internen Arbeitsweise des Computers. Wann immer Sie eine Variable anlegen, muss der Computer Speicherplatz für diese Variable bereitstellen. Denn wenn Sie eine Information in die Variable legen, muss diese Information ja vom Computer tatsächlich irgendwo gespeichert werden.


Links zu den beiden Unterseiten:


#include <iostream>
#include <string>
using namespace std;

int main()
{
  string str="Hallo";
  string * s;
  s = &str; //Adresse von str
  cout << str << endl;
  return 0;
}


//letzt.cpp
//neu am 4. 6. 2015
#include <iostream> //cout<<
#include <cstdlib> //rand
#include <ctime> //srand
#include <conio.h> //getch, kbhit

using namespace std;

const int MAX = 80;
    // 1 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7
int g[] = {5,2,4,4,3,8,7,4,4,8,4,4,4,4,9,3,5,3,3,2,2,4,4,6,8,
1,9,2,3,6,5,3,2,7,6,4,5,4,4,4,8,9,5,7,7,4,3,4,3,3,4,4,5,7,6,5,4,
5,4,1,2,4,4,2,2,3,4,5,6,5,4,8,9,7,5,3,1,5,4,4,4,7,6,4,4,4,8,4,6,9};

int* pointer = &g[0];

void wait();

void falsche()
{
    getch();   
    cout << "  Nein, sie waren nicht gleich!";
    wait();
}   //falsche()

void richtig()
{
    if (!kbhit())
    {
        cout << "  Hier waren zwei gleich! Keine Taste druecken!";
        wait();
    }//if
    else getch();
}     //richtig
     
int main()
{
    srand(time(NULL));
    cout << "Das Letzte-Zahl-Spiel ............";
    cout << endl << "--------------------------------------------";
    cout << endl << "Bitte gleich eine Taste druecken, wenn die zwei letzten Ziffern gleich sind.";
    cout << endl << "Jetzt auch zum Programmstart bitte eine Taste druecken!" << endl;
    getch();
   
    //Mischen:
    for (int m =1; m<MAX; m++)
    {
        int zufall = rand()%MAX;
        int temp = g[m];
        g[m] = g[zufall];
        g[zufall] = temp;       
    } //for m
    //Damit die erste Zahl 0 ist:
    g[0]=0;
   
    for (int i=0; i<MAX; i++)
    {
        ++pointer;
        wait();
        cout << " " << *pointer;//Den Inhalt des Zeigers ausgeben
        //Wenn die letzte Ziffer gleich ist:
        if ( *pointer - *(pointer-1)==0)
        {
            /* if (!kbhit()) */ wait();       
                richtig();
        } //if *pointer
        else if (kbhit()) falsche();
    } //for i
    //Ende:
    cout << endl << "Eine Taste bitte zum Ende ....";
    getch();
    return 0;
}     //main()
void wait()
{
    for (int a=0; a<10; a++)
      for (long L=0; L<90000000; L++) {  }
}
    


Das Fenster groß stellen, bitte! Dann kannst Du es besser lesen.


new, delete