18. 9. 2013

Programování C/C++. Parameter funkce odkazem

Vsadím se, že jste to zaisté zkoušeli, předát parameter funkce pomocí její reference v prostředí pro ANSI C případně C99 a hodilo Vám to hlášku (třeba v překladači Mingw):

... error: expected ';', ',' or ')' before '&' token ...

,protože jste se snažili zkompilovat následující ukázku programu:

void test(u8 &a) {
 a++;
}

Důvod, proč to nejde zkompilovat, je ten že předávání parametru funkce pomocí reference, jde pouze u jazyku C++ a ne u jazyka C a ani u jazyka objective-C.

A když už jsme u reference, tak se podívejte na následující ukázku:

int main(void) {
 u8 b=1;
 test(b);
 cout << "b=" << b << endl;
}

Po spuštění programu bude hodnota b=2. A to je z toho důvodu že se vezme reference lokální proměnné b. Ta se předá jako parameter do funkce test, tam se inkrementuje hodnota na kterou reference ukazuje a tím se změní i hodnota proměnné b protože reprezentuje to samé pamětové místo.

Zdroj: Passing arguments by reference
S pozdravem
ViaExplore - Tomáš Kamenický
Okomentovat