Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno 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.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Ještě dotaz, jak bych měl vyřešit, když proměnou potřebuji ve funkci, kterou volá další funkce, ve v… nový
ahojahojahoj 07.11.2014 17:52
ahojahojahoj
Keď potrebuješ len smerník na int, tak si posielaj ďalej len smerník na int (namiesto smerníka na sm… poslední
los 07.11.2014 18:22
los

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:

#include <stdio.h>
#include <stdlib.h>

void zmena1(int *c)
{
	*c = *c + 1;
        zmena2(&c)
}

void zmena2(int **c)
{
        **c = **c + 1;
}


int main()
{
    int cislo = 0;

    zmena1(&cislo);
    printf("Vysledna hodnota %d\n", cislo);

    return 0;
}

(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ě.

Zpět do poradny Odpovědět na původní otázku Nahoru