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

LukasMegPrask
nováček
Příspěvky: 19
Registrován: listopad 12
Pohlaví: Nespecifikováno
Stav:
Offline

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

Příspěvekod LukasMegPrask » 20 bře 2013 14:26

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 :?

Reklama
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

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

Příspěvekod CZechBoY » 20 bře 2013 14:41

č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: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod faraon » 20 bře 2013 17:13

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: listopad 12
Pohlaví: Nespecifikováno
Stav:
Offline

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

Příspěvekod LukasMegPrask » 20 bře 2013 19:28

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


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Synology router RT2600ac nelze upravovat předávání portů
    od pebura » 14 lis 2024 00:44 » v Sítě - hardware
    2
    3095
    od pebura Zobrazit poslední příspěvek
    26 lis 2024 17:18

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

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti