Muchas gracias a los dos, me aclararón mis dudas ,me estaba volviendo un poco loco . Saludos , un moderador puede cerrar este tema.
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúCita de: amchacon en 11 Mayo 2013, 01:57 AM
No aver, puedes declararlo así. Pero una vez creado no puedes redimensionarlo (con new sí, pero acuerdate antes de borrar los datos anteriores).
Además los array cogen memoria de la pila mientras que new coge memoria de la ram.
Para hacernos una idea, al ejecutar el programa. El SO le asigna un espacio de memoria al programa que se le dedomina "pila", puede ser alrededor de 2-10 mb. Esta memoria se va llenando de forma consecutiva, por lo que se puede crear elementos y borrar elementos de una forma rápida y sencilla. Todos los elementos básicos que crees (hasta los objetos) se meten en la pila.
Evidentemente, es muy probable que con 2 mb te quedes corto. Por lo que puedes pedirle al sistema operativo que te reserve memoria adicional (usando new). El sistema operativo "buscará" celdas sueltas en la memoria y te asignará lo que vayas necesitando. Evidentemente, tendremos que guardar la dirreción de la celda asignada, de ahí que haya que usar punteros.
Para hacernos una idea, prueba la siguiente sentencia:int Cosita[1000000];
Esta sentencia probablemente fallará (aunque tengamos 4 gb de ram). En cambio si usamos new:int* Cosita = new int[1000000];
Debería funcionar sin problemas.
Cita de: amchacon en 11 Mayo 2013, 01:31 AM
En C++ se puede. En C también a partir del estándar C98.
Es un array de tamaño variable. Antiguamente las variables se creaban al principio de cada llave. Por lo que se necesitaba su tamaño antes de entrar.
Ahora cada variable puede crearse en cualquier línea de código y en cualquier momento.
PD: No da warning, a no ser que tengas un compilador obsoleto o tengas activado warnings de C estricto.
Cita de: Leo Gutiérrez. en 11 Mayo 2013, 00:46 AM
Se puede, pero debería darte un warning.
#include <iostream>
using namespace std;
int main()
{
int var;
cin>>var;
int x[var];
for(int i=0;i<var;i++)
{
cout<<"Elemento " << i + 1 << " : " ; cin>>x[i];
cout<<endl;
}
for(int i=0;i<var;i++)cout<<x[i]<<endl;
}
Referencia a 'pthread_create' sin definir.
#include <iostream>
#include <unistd.h> // necesaria para ejecutar fork()
#include <stdlib.h> // necesaria para ejecutar exit().
#include <pthread.h>
Citar<phread.h>?? o , tengo que realizar algún especie de linkiado o cosas así , gracias de antemano. !
Cita de: andrex.125 en 10 Mayo 2013, 04:35 AM
ThePinkPanther
muchas gracias por la ayuda, ya comprendí un poco del operador new.
con respecto al ejemplo de la profesora ya me tocaría resolverlo con ella.
Muchas gracias.