Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 15. 08. 2011 19:55

voujtik
Zelenáč
Příspěvky: 3
Reputace:   
 

C - matice jako výstup z funkce

Zdravim,
narazil jsem na drobný problém.
nadefinoval jsem si nový typ

Code:

typedef  int matice[10][10]

a dále funkci s návrotovou hodnotou právě jako adresa na 'matice'

Code:

matice& SCITANI(matice mat_A, matice mat_B, int s){
    matice mat;
    int i,j;
    for (i = 0; i < s; i++){
        for (j = 0; j < s; j++){
            mat[i][j] = mat_A[i][j] + mat_B[i][j];
        }
    }
    return mat;
}

a následně použil tuto fci v kódu programu

Code:

matice *p_vys;
p_vys = &SCITANI(mat_A, mat_B, m);

Když se snažim následně vypsat tak vypíšu pouze hodnoty [0][0], [1][0], [2][0]...
a tak se ptám co s tím?, asi bude problém někde v nějakým ukazatelu, ale v tom se moc nevyznám
předem dík

Offline

 

#2 20. 08. 2011 22:15

Billy
Příspěvky: 60
Reputace:   
 

Re: C - matice jako výstup z funkce

↑ voujtik:↑ voujtik:
Ahoj,

mas tam dost beznu chybu zaciatocnikov s pointermi, vracias referenciu na lokalnu premennu, to nemoze fungovat. Premennu mat definujes len lokalne pre funkciu SCITANI, hned ako skoncis vypocet v tej metode tak mat prestane existovat, a referencia ktoru si vratil nie je platna.

Riesenim je pridat tam treti vstupny parameter, predany pointerom alebo referenciou do ktoreho zapises vysledok.
A ked uz pouzivas tie referencie tak tym by sa mali predavat aj parametre mat_A a mat_B do funkcie, najlepsie ako const referencie v tomto pripade.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson