C - Předávání dvourozměrného pole funkci

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Odpovědět
LukasMegPrask
nováček
Příspěvky: 19
Registrován: 30 lis 2012 16:27

C - Předávání dvourozměrného pole funkci

Příspěvek od LukasMegPrask »

Ahoj, mám problém s předáním respektive vrácením dvourozměrného pole funkce.

V kódu mám například definovanou tuto funkci:

int uprava(int mod, int radek, int sloupec, int(*matice)[sloupec+1])
{
for (int i = 0; i < radek; i++)
{
for(int j = 0; j <= sloupec; j++)
{
matice[i][j] %= mod;
}
}

return matice;
}

int main(void)
{
int modulo, sloupec, radek;

scanf("%d", &modulo);
scanf("%d %d", &sloupec,&radek);

int matice[radek][sloupec+1];

uprava(modulo,radek,sloupec,matice);
...
...
...


return 0;
}

Program sice spustím, ale píše mi to warrning: Return makes integer from pointer without a cast(enabled by default).
Program mám jako úkol do školy, a musíme ho odevzdávat bez warningu, takže prosím o radu :?
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: 20 srp 2008 14:02
Bydliště: Brno
Kontaktovat uživatele:

Re: C - Předávání dvourozměrného pole funkci

Příspěvek od CZechBoY »

čau,
kde ti to hlásí tu chybu?

btw máš to pole vůbec alokovaný?
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7408
Registrován: 23 pro 2010 09:23

Re: C - Předávání dvourozměrného pole funkci

Příspěvek od faraon »

Pole v Céčku předávat nejde, jen ukazatel na něj, podívej se jak se předávají třeba řetězce (pole znaků) funkci scanf(). Předáváš prostě ukazatel na místo v paměti kde se má provést nějaká činnost, funkce jí provede a skončí, nepotřebuješ žádný return! Tedy pokud ta funkce nevrací nějakou vypočítanou hodnotu, třeba scanf() vrací počet úspěšně načtených položek (aby ses dozvěděl jestli byla správná vstupní data).

Ten tvůj program se dá zkompilovat po téhle úpravě:

Kód: Vybrat vše

void uprava(int mod, int radek, int sloupec, int(*matice)[sloupec+1])
{
    for (int i = 0; i < radek; i++)             
    {                                               
        for(int j = 0; j <= sloupec; j++)
        {
            matice[i][j] %= mod;
        }
    }
}


Ale zamysli se nad tím co vlastně ta uprava() má provádět, jestli to co jí předáváš je skutečně to co chceš zpracovávat...
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
LukasMegPrask
nováček
Příspěvky: 19
Registrován: 30 lis 2012 16:27

Re: C - Předávání dvourozměrného pole funkci

Příspěvek od LukasMegPrask »

Jo jo díky, už mi to jede bez warningů ;)
Odpovědět

Zpět na „Programování a tvorba webu“