

Jazyk C - předávání odkazem
Čus, mám primitivní program, který mi vyhazuje nesmysly, ale netuším proč
#include <stdio.h>
#include <stdlib.h>
void zmena(int *c)
{
printf("2. %d\n", c);
*c = c + 1; // warning: assignment makes integer from pointer without a cast
printf("3. %d\n", c);
}
int main()
{
int cislo = 0;
printf("1. %d\n", cislo);
zmena(&cislo);
printf("Vysledna hodnota %d\n", cislo);
return 0;
}
Výpis:
1. 0
2. 2686748
3. 2686752
Vysledna hodnota 2686752
V čem dělám chybu, popř. jak by to mělo vypadat, aby výsledna hodnota byla 1?
Překládám to v CodeBlocksu, spouštím přes příkazový řádek na Windows 8.1.
Ještě dotaz, jak bych měl vyřešit, když proměnou potřebuji ve funkci, kterou volá další funkce, ve výsledku něco takového:
(sepsal jsem to z hlavy, snad tam není nějaký jiný problém)
Ten ukazatel na ukazatel ve druhé funkci vypadá divně, proto bych se chtěl zeptat, jestli není možnost, jak to vyřešit nějak jinak. Ptám se protože v programu potřebuju takhle předat hodnotu přes více funkcí, takže ve výsledku tam pak pracuju s ***proměná, což mi sice funguje, jak má, ale nevypadá to rozumně.
Keď potrebuješ len smerník na int, tak si posielaj ďalej len smerník na int (namiesto smerníka na smerník na int):