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