
Ayuda punteros en C
Publicado por Victor (17 intervenciones) el 14/08/2016 00:02:49
Hola buenas, tengo la siguiente duda en mi codigo: mi problema es que no se porque el valor de suma dentro de la funcion de tipo void no me cambia, me explico. En el metodo main he creado una variable suma, inicializada a cero,y la cual le he pasado la direccion de memoria cuando he llamado a la funcion ya que en los parametros de la funcion de tipo void hay un puntero (int *suma). Yo cuando pase como parametro a suma_divisores(a,&suma) en este momento cuando va a la funcion de tipo void le paso la direccion de memoria, por lo tanto, la variable suma del metodo main y la variable suma de la funcion de tipo void son la misma,es decir, comparten el mismo espacio de memoria, por lo que no entiendo porque no me cambia el valor de *suma que hay dentro de la funcion void.
PD:poner el modo debug para darse cuenta de que el valor de suma de la funcion void no cambia.
PD:poner el modo debug para darse cuenta de que el valor de suma de la funcion void no cambia.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//Ejercicio 17
//Programa que determina si dos enteros positivos son amigos
#include <stdio.h>
void suma_divisores(int numero, int *suma);
int main (){
int a, b;
int suma;
suma = 0;
printf("\t ***Numeros amigos *** \t \n");
printf("Introduce un entero a: ");
scanf("%i",&a);
printf("Introduce un entero b: ");
scanf("%i",&b);
suma_divisores(a,&suma);
if(suma == b){
suma_divisores(b,&suma);
if(suma == a){
printf("Los numeros %i y %i son amigos!! \n",a,b);
}
else{
printf("Los numeros %i y %i NO son amigos :( \n",a,b);
}
}
else {
printf("Los numeros %i y %i NO son amigos :( \n",a,b);
}
system("pause");
return 0;
}
void suma_divisores(int numero, int *suma){ //numero = b; suma = &suma;
int i;
*suma = 0;
for(i = 1; i < 1000; i++){
if(numero % i == 0){
*suma += i;
}
}
}
Valora esta pregunta


0