Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] arreglos en c

Estas en el tema de arreglos en c en el foro de C/C++ en Foros del Web. Código: int Programacion1[],Programacion2[]; char VMatricula; //Funciones void CAlumnosSeccion(int CantidadAlumnos){ if(CantidadAlumnos>0){ Programacion1 = new int[CantidadAlumnos]; Este es el codigo que estoy intentando hacer para un arreglo ...
  #1 (permalink)  
Antiguo 01/12/2014, 12:27
johana_castro95
Invitado
 
Mensajes: n/a
Puntos:
Pregunta arreglos en c

Código:
int Programacion1[],Programacion2[];
char VMatricula;
//Funciones
void CAlumnosSeccion(int CantidadAlumnos){
    if(CantidadAlumnos>0){
        Programacion1 = new int[CantidadAlumnos];
Este es el codigo que estoy intentando hacer para un arreglo de n cantidad de elementos de esta manera lo hago en c++ pero en c no se como lo podria hacer, alguien me ayudaria con eso
  #2 (permalink)  
Antiguo 01/12/2014, 12:49
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: arreglos en c

sustituye int por malloc:

Código C:
Ver original
  1. struct CAlumnosSeleccion
  2. {
  3. //...
  4. };
  5.  
  6. int Programacion1[],Programacion2[];
  7. char VMatricula;
  8. //Funciones
  9. struct CAlumnosSeleccion reservarMemoria( int CantidadAlumnos)
  10. {
  11.   struct CAlumnosSeleccion to_return;
  12.   if(CantidadAlumnos>0)
  13.     to_return.Programacion1 = (int*)malloc( CantidadAlumnos * sizeof( struct CAlumnosSeleccion) );
  14.   else
  15.     to_return.Programacion1 = 0;
  16.   return to_return;
  17. }
  #3 (permalink)  
Antiguo 01/12/2014, 18:54
johana_castro95
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: arreglos en c

Código:
struct CAlumnosSeleccion
{
//...
};
En esta parte debo de meter el arreglo vacio ? o meno puedo meter la informacion del alumno??
  #4 (permalink)  
Antiguo 02/12/2014, 00:19
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: arreglos en c

Necesitas un buen manual de C. Busca en la biblioteca de tu universidad, en amazon o donde sea, pero consigue un buen manual. Es muy importante tener una buena base para entender lo que estás haciendo.

En C++ existen clases y estructuras, en C únicamente estructuras, pero no son como las estructuras en C++, las de C son mucho más simples ya que no entienden ni de herencia ni de funciones miembro.

C++ te permite sobrecargar un amplísimo abanico de funciones, entre ellas "new" y "delete". Esto te permite usarlas para crear e inicializar cualquier tipo de objeto (y si no las sobrecargas tú ya se encarga el compilador de crear una versión a medida para clase). Sin embargo en C todo esa responsabilidad recae en el programador.

Un arreglo vacío no es más que un puntero (del tipo que te de la gana) que no apunta a nada o no tiene información de interés:

Código C:
Ver original
  1. int* ptr = 0;
  2. struct CAlumnosSeleccion* ptr2 = 0;

Para rellenar un arreglo primero hay que hacer que el arreglo apunte a un elemento válido, esto lo puedes conseguir de dos formas: reservando memoria dinámica o usando la pila:

Código C:
Ver original
  1. // Asignación por reserva dinámica de memoria
  2. int* ptr = (int*)malloc( 20 * sizeof(int) );
  3.  
  4. // Asignación por referencia
  5. struct CAlumnosSeleccion unaEstructura;
  6. struct CAlumnosSeleccion*ptr2 = &unaEstructura;

En el primer caso no hay que olvidar llamar a "free" cuando la memoria reservada ya no sea necesaria. Si no se hace se crean lagunas de memoria. En el segundo caso no hay que hacer, bajo ningún concepto, una llamada a "free". De hacer la llamada lo más seguro es que el programa genere un error.

Etiquetas: arreglo, arreglos, char, funcion, int, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:46.