c++/ukazatele/ukazatele.cpp
author František Kučera <franta-hg@frantovo.cz>
Sun, 14 Jun 2015 01:41:47 +0200
changeset 27 165fb7ff9855
parent 15 b166c6f49719
permissions -rw-r--r--
příklad reflexe v Javě – přepisování soukromé proměnné
https://blog.frantovo.cz/c/348/P%C5%99episujeme%20soukrom%C3%A9%20prom%C4%9Bnn%C3%A9%20v%C2%A0Jav%C4%9B%20pomoc%C3%AD%20reflexe
franta-hg@12
     1
#include <iostream>
franta-hg@15
     2
#include <stdlib.h>
franta-hg@12
     3
#include <string>
franta-hg@12
     4
#include <ukazatele.h>
franta-hg@12
     5
#include <barvicky.h>
franta-hg@12
     6
franta-hg@12
     7
using namespace std;
franta-hg@12
     8
franta-hg@15
     9
int main (int argc, const char* argv[]) {
franta-hg@12
    10
	cout << obarvi("*** Ukazatele ***", BARVA_ZELENA) << endl << endl;
franta-hg@15
    11
franta-hg@12
    12
	upravPromennou();
franta-hg@15
    13
	cout << endl;
franta-hg@15
    14
	zpracujParametry(argc, argv);
franta-hg@15
    15
	
franta-hg@15
    16
	cout << endl << obarvi("*** konec programu ***", BARVA_ZELENA) << endl;
franta-hg@15
    17
	exit(0);
franta-hg@12
    18
}
franta-hg@12
    19
franta-hg@12
    20
void upravPromennou() {
franta-hg@12
    21
	int x;
franta-hg@12
    22
	
franta-hg@15
    23
	x = 100;
franta-hg@12
    24
	upravSpatne(x);
franta-hg@12
    25
	cout << obarvi("špatný výsledek: ", BARVA_ZELENA) << x << endl;
franta-hg@12
    26
	
franta-hg@12
    27
	x = 100;
franta-hg@12
    28
	upravDobre(&x);
franta-hg@12
    29
	cout << obarvi("dobrý výsledek:  ", BARVA_ZELENA) << x << endl;
franta-hg@12
    30
	
franta-hg@12
    31
	
franta-hg@15
    32
	/** Nejde přeložit → error: invalid conversion from ‘int’ to ‘int*’ */
franta-hg@12
    33
	//x = 100;
franta-hg@12
    34
	//upravDobre(x);
franta-hg@12
    35
	//cout << obarvi("dobrý výsledek:  ", BARVA_ZELENA) << x << endl;
franta-hg@12
    36
	
franta-hg@15
    37
	/** Nejde přeložit → error: invalid conversion from ‘int*’ to ‘int’ */
franta-hg@15
    38
	//x = 100;
franta-hg@12
    39
	//upravSpatne(&x);
franta-hg@12
    40
	//cout << obarvi("špatný výsledek: ", BARVA_ZELENA) << x << endl;
franta-hg@12
    41
}
franta-hg@12
    42
franta-hg@12
    43
/** Upravujeme pouze kopii hodnoty n – úprava platí jen v rámci této funkce */
franta-hg@12
    44
void upravSpatne(int n) {
franta-hg@12
    45
  n = 123;
franta-hg@12
    46
}
franta-hg@12
    47
franta-hg@12
    48
/** Upravíme hodnotu v paměti, do které ukazuje *n – úprava platí globálně */
franta-hg@12
    49
void upravDobre(int *n) {
franta-hg@12
    50
  *n = 123;
franta-hg@12
    51
}
franta-hg@12
    52
franta-hg@15
    53
void zpracujParametry(int argc, const char* argv[]) {
franta-hg@15
    54
	cout << obarvi("Počet parametrů:  ", BARVA_ZELENA) << argc << ":" << endl;
franta-hg@15
    55
	for (int i = 0; i < argc; i++) {
franta-hg@15
    56
		cout << obarvi("Parametr:  ", BARVA_ZELENA) << argv[i] << endl;
franta-hg@15
    57
	}	
franta-hg@15
    58
}
franta-hg@15
    59