Diskuze: Práca s premennými z iných funkcí
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 5 zpráv z 5.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
S normální lokální proměnnou toto nepůjde, protože pokud funkce není volaná, místo pro tuto proměnnou není alokované. Možná, kdyby proměnná byla deklarovaná jako stacit (jestli se nepletu, takové proměnné zachovávají hodnotu napříč jednotlivými voláními funkce), teoreticky by něco šlo udělat, ale nevím, zda to jazyk podporuje.
Řešením je ve funkci pracovat s danou hodnotou přes ukazatel, nebo vše potřebné předat v parametrech.
Čeho bys chtěl dosáhnout přesně?
#include <stdio.h>
int test(){
int premenna = 123;
return premenna;
}
int main(){
int i = 10, premenna_z_funkcie = test();
printf("%d\n", premenna_z_funkcie / j);
}
#include <stdio.h>
#include <stdlib.h>
void premenne(int *i, int *j)
{
*i = 25;
*j = 50;
}
int main(void)
{
int i, j, *p_i = &i, *p_j = &j;
premenne(p_i, p_j);
printf("%d + %d = %d\n", *p_i, *p_j, *p_i + *p_j);
return 0;
}
Myslím, že najlepšie je použitie poľa pointerov.
#include <stdio.h>
#include <stdlib.h>
void premenne(int *i)
{
i[0] = 25;
i[1] = 50;
i[2] = 12;
i[3] = 31;
}
int main(void)
{
int *p_i;
p_i = (int *) malloc(4 * sizeof(int));
premenne(p_i);
printf("%d + %d + %d + %d = %d\n", p_i[0], p_i[1], p_i[2], p_i[3], p_i[0] + p_i[1] + p_i[2] + p_i[3]);
return 0;
}
Zobrazeno 5 zpráv z 5.