

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.
Tady je problém. Přičítáš tam pointer, ne hodnotu na kterou ukazuje.
Správně tedy takto:
A také funkci printf musíš předat hodnotu, ne ukazatel (ten bys předával třeba při výpisu řetězce). Např.
keby aspon cital ten warning :)
čítal, ale netušil, co to pro mě přesně znamená :)
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):