sunt nou pe acest forum, la fel si in C (cca 2 luni).
Incerc sa creez un programel simplu in c si nu imi dau seama unde gresesc:
Rezultatul:#include<stdio.h>
#define COMPARA 5
int *ptr_a, *ptr_b; // POINTERII *ptr_a si *ptr_b au valoarea 5 amandoi.
int functia_1(){
int a, b, c; // declaram 3 variabile
a = 10; // Variabila A primeste valoarea 10
b = 5; // Variabila B primeste valoarea 5
c = a - b; // Variabila C primeste valoarea rezultatului dintre a - b
ptr_a=&c; // Pointerul ptr_a ia valoarea lui C, adica 5
printf("Valorea pointerului \"A\" este:\t\t%d\n", *ptr_a); // Se printeaza valoarea 5
return *ptr_a; // Se da return la *ptr_a, care memoreaza valoarea 5
}
int functia_2(){
int d, e, f; // declaram 3 variabile
d = 2; // Variabila D primeste valoarea 2
e = 3; // Variabila E primeste valoarea 3
f = d + e; // Variabila F primeste valoarea rezultatului dintre D + E
ptr_b=&f; // Pointerul ptr_b ia valoarea lui F, adica 5
printf("Valorea pointerului \"B\" este:\t\t%d\n\n", *ptr_b); // Se printeaza valoarea 5
return *ptr_b; // Se da return la *ptr_b, care memoreaza valoarea 5
}
int calculeaza(){
int i;
i = 0;
for (i=0; i<1; i++)
if (*ptr_a == COMPARA && *ptr_b == COMPARA){
printf("Valoarea lui \"*ptr_a\" este egala cu Valoarea lui \"*ptr_b\":\n");
printf("\tValorea pointerului \"A\" este:\t\t%d\n", *ptr_a);
printf("\tValorea pointerului \"B\" este:\t\t%d\n\n", *ptr_b);
}else{
printf("\n\n\nValoarea lui \"*ptr_a\" nu este egala cu Valoarea lui \"*ptr_b\":\n");
printf("\tValorea pointerului \"A\" este:\t\t%d\n", *ptr_a);
printf("\tValorea pointerului \"B\" este:\t\t%d\n\n", *ptr_b);
}
return 0;
}
int main (){
functia_1();
functia_2();
calculeaza();
return 0;
}
programul dupa cum se observa ruleaza cu succes.Valorea pointerului "A" este: 5
Valorea pointerului "B" este: 5
Valoarea lui "*ptr_a" este egala cu Valoarea lui "*ptr_b":
Valorea pointerului "A" este: 5
Valorea pointerului "B" este: 5
Acum, daca modific functia_1, din:
in:int functia_1(){
int a, b, c;
a = 10;
b = 5;
c = a - b;
ptr_a=&c;
printf("Valorea pointerului \"A\" este:\t\t%d\n", *ptr_a);
return *ptr_a;
}
programul spune:int functia_1(){
int a;
a = 5;
ptr_a=&a;
printf("Valorea pointerului \"A\" este:\t\t%d\n", *ptr_a);
return *ptr_a;
}
dupa cum se vede avem:Valorea pointerului "A" este: 5
Valorea pointerului "B" este: 5
Valoarea lui "*ptr_a" nu este egala cu Valoarea lui "*ptr_b":
Valorea pointerului "A" este: 0
Valorea pointerului "B" este:
valoarea lui A 0 in loc de 5:
Intrebarea mea este de ce?Valorea pointerului "A" este: 0
Multumesc.
Toate bune.