es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Pasando una matriz como parámetro en C

¿Por qué funciona este código?

#include <stdio.h>

void func(int v[]){
v[0] = 1;
}

int main(){
int v[5] = {0};
func(v);
for (int i = 0; i < 5; i++)
{
printf(“%d “, v[i]);
}
}

La salida que obtengo de esto es ‘1 0 0 0 0’, pero ¿por qué? No estoy pasando un puntero, ¿por qué puede la función cambiar el arreglo en mi función principal?</stdio.h>

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    La razón por la cual este código funciona es debido a la paso por referencia. En C, cuando se pasa un arreglo como argumento a una función, se convierte automáticamente en un puntero al primer elemento del arreglo. Por lo tanto, cuando se llama a la función func con v, en realidad se está recibiendo un puntero a v[0].

    Esto significa que cuando v[0] es modificado dentro de la función, en realidad se está modificando el valor almacenado en la ubicación de memoria indicada por el puntero v. Dado que v en main también apunta a la misma ubicación de memoria, la modificación realizada por func se refleja en v.

    En resumen, aunque la función no recibe explícitamente un puntero, todavía es capaz de modificar el contenido del arreglo en main debido a la naturaleza de paso por referencia de los argumentos de arreglo en C.

Comments are closed.