c++/ukazatele/ukazatele.cpp
author František Kučera <franta-hg@frantovo.cz>
Sun, 20 Sep 2009 23:08:30 +0200
changeset 12 7b718fcf981c
child 15 b166c6f49719
permissions -rw-r--r--
Projekt „ukazatele“: pro pochopení ukazatelů (pointerů) v C++
franta-hg@12
     1
#include <iostream>
franta-hg@12
     2
#include <string>
franta-hg@12
     3
#include <ukazatele.h>
franta-hg@12
     4
#include <barvicky.h>
franta-hg@12
     5
franta-hg@12
     6
using namespace std;
franta-hg@12
     7
franta-hg@12
     8
int main () {
franta-hg@12
     9
	cout << obarvi("*** Ukazatele ***", BARVA_ZELENA) << endl << endl;
franta-hg@12
    10
	upravPromennou();
franta-hg@12
    11
}
franta-hg@12
    12
franta-hg@12
    13
void upravPromennou() {
franta-hg@12
    14
	int x;
franta-hg@12
    15
	
franta-hg@12
    16
	x= 100;
franta-hg@12
    17
	upravSpatne(x);
franta-hg@12
    18
	cout << obarvi("špatný výsledek: ", BARVA_ZELENA) << x << endl;
franta-hg@12
    19
	
franta-hg@12
    20
	x = 100;
franta-hg@12
    21
	upravDobre(&x);
franta-hg@12
    22
	cout << obarvi("dobrý výsledek:  ", BARVA_ZELENA) << x << endl;
franta-hg@12
    23
	
franta-hg@12
    24
	
franta-hg@12
    25
	/** Nefunguje → error: invalid conversion from ‘int’ to ‘int*’ */
franta-hg@12
    26
	//x = 100;
franta-hg@12
    27
	//upravDobre(x);
franta-hg@12
    28
	//cout << obarvi("dobrý výsledek:  ", BARVA_ZELENA) << x << endl;
franta-hg@12
    29
	
franta-hg@12
    30
	/** Nefunguje → error: invalid conversion from ‘int*’ to ‘int’ */
franta-hg@12
    31
	//x= 100;
franta-hg@12
    32
	//upravSpatne(&x);
franta-hg@12
    33
	//cout << obarvi("špatný výsledek: ", BARVA_ZELENA) << x << endl;
franta-hg@12
    34
}
franta-hg@12
    35
franta-hg@12
    36
/** Upravujeme pouze kopii hodnoty n – úprava platí jen v rámci této funkce */
franta-hg@12
    37
void upravSpatne(int n) {
franta-hg@12
    38
  n = 123;
franta-hg@12
    39
}
franta-hg@12
    40
franta-hg@12
    41
/** Upravíme hodnotu v paměti, do které ukazuje *n – úprava platí globálně */
franta-hg@12
    42
void upravDobre(int *n) {
franta-hg@12
    43
  *n = 123;
franta-hg@12
    44
}
franta-hg@12
    45