AYUDA: Función void
Publicado por Ramón (6 intervenciones) el 27/03/2016 11:47:39
Mi primera duda es saber si void es una función. La segunda es saber si los datos enviados a "void" son por valor o por referencia, me explico:
Si por ejemplo quisiera leer los datos de una matriz cuadrada de orden "n" en un arreglo "matriz[n][n]", llamo a la función "leerMatriz", la función hace lo que deba hacer y no regresa ningún valor. Pero si modifico un dato en la función "leerMatriz" y luego lo muestro en la función principal (main), lo que veo es que efectivamente se modificó el valor, siendo que al pasar valores a una función los valores originales no se pueden modificar puesto que hace una copia de los valores originales.
Si por ejemplo quisiera leer los datos de una matriz cuadrada de orden "n" en un arreglo "matriz[n][n]", llamo a la función "leerMatriz", la función hace lo que deba hacer y no regresa ningún valor. Pero si modifico un dato en la función "leerMatriz" y luego lo muestro en la función principal (main), lo que veo es que efectivamente se modificó el valor, siendo que al pasar valores a una función los valores originales no se pueden modificar puesto que hace una copia de los valores originales.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
void leerMatriz(int n, int matriz[][n]);
int main(){
int n;
puts("El orden es:");
scanf("%i", &n);
int matriz[n][n];
leerMatriz(n, matriz);
printf("El valor de (1,1) es de %i\n", matriz[0][0]);
return 0;
}
void leerMatriz(int n, int matriz[][n]){
int i, j;
for(i=0; i<n; i++)
for(j=0; j<n; j++){
printf("(%i,%i) = ", i+1, j+1);
scanf("%i", &matriz[i][j]);
};
matriz[0][0] = 6;
}
Valora esta pregunta


0