Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

411
Vistas
¿Cómo pasar un puntero entero a una función?

Aquí estoy ejecutando un código simple en C. Se está compilando bien pero falla durante el tiempo de ejecución.

 #include <stdio.h> #include <conio.h> void sum(int x,int y,int *z) { *z=x+y; } void main() { int a=10,b=20,*c; sum(a,b,c); printf("sum is %d\n",*c); }

¿Alguien puede señalar cuál es el problema? Además, ¿cómo se pasa un puntero a una función?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Su error es que pasó un puntero entero no inicializado a una función y luego usó el puntero. Lo que probablemente pretendía hacer era asignar automáticamente un número entero en la pila y luego pasar la dirección de dicho número entero a la función.

 #include <stdio.h> #include <conio.h> void sum(int x,int y,int *z) { *z=x+y; } void main() { int a=10,b=20,c; // Automatically allocate an integer on the stack sum(a,b,&c); // Third argument is the address of the integer printf("sum is %d\n",c); }

La clave es recordar que cuando haces int *c estás asignando un puntero, cuando haces int c estás asignando un número entero. Si desea modificar una variable pasada a una función, el patrón típico en C es pasar la dirección de dicha variable, pero primero debe asignar el tipo adecuado, en este caso un int y no un int * . Luego puede usar la dirección del operador & para obtener la dirección de los datos relevantes que luego pasa como el argumento de la función.

over 4 years ago · Santiago Trujillo Denunciar

0

El problema en su programa anterior es el puntero unitario c . Entonces puede asignar memoria a c usando malloc -

 #include <stdio.h> #include <stdlib.h> void sum(int x,int y,int *z) { *z=x+y; } int main() // declare main as int. { int a=10,b=20,*c; c=malloc(sizeof(int)); //allocating memory to pointer c sum(a,b,c); printf("sum is %d\n",*c); free(c); // freeing allocated memory retrirn 0; }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda