![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Te agradezco por la aclaracion...
Habia considerado en primer lugar usar la opcion new y delete, pero luego me dio por aprovecharme de las características de malloc, realloc y free. porque necesito "agrandar" y "achicar" el array en tiempo de ejecución... Ahora dadas las "ventajas" que me indicas con el uso del new-delete buscare la manera de hacer mi propio malloc con estas funciones...Y efectivamente al cambiar Código:
vP[i]->a=i; vP[i]->b=i+1; vP[i]->c=i-1; Código:
vP[i].a=i; vP[i].b=i+1; vP[i].c=i-1; Sin embargo mi plan era pasar los datos de los structs por referencia, es decir con el operador -> . ¿Qué cambios debería hacer en mi array para hacer esto? De antemano muchas gracias por todo. |
|
#2
|
||||
|
||||
|
Cita:
Creo que la confusión te surge por que en C/C++ los arreglos y punteros son equivalentes. Esto no quiere decir que sean lo mismo, si no que mediante la aritmética de punteros, se puede acceder a los elementos de un arreglo al igual que mediante un índice. Resumiendo, la aritmética de punteros y la indexación de arreglos son equivalentes, pero los punteros y los arreglos no. Una forma de acceder del modo que deseas: vP[i]->, es declararlo como apuntador a apuntador de struct, ya que para usar el operador puntero a miembro (->), la expresion debe estar declarada como apuntador a struct o a union. Código:
#include <iostream>
using namespace std;
struct punto {
int x;
int y;
};
int main(int argc, char* argv[]) {
int i, num = 99;
struct punto **vP = (struct punto **)malloc(sizeof(struct punto)*num);
for(i=0;i<num;i++) vP[i] = (punto *)malloc(sizeof(struct punto));
// cargar unos valores del modo que solicitas
for(i=0;i<num;i++) {
vP[i]->x = i;
vP[i]->y = i+1;
}
// mostrar del mismo modo
for(i=0;i<num;i++)
cout << vP[i]->x << " " << vP[i]->y << endl;
for(i=0;i<num;i++) free(vP[i]);
free(vP);
cin.get();
}
Código:
#include <iostream>
using namespace std;
typedef struct punto *ppunto;
struct punto {
int x;
int y;
};
int main(int argc, char* argv[]) {
int i, num = 99;
ppunto *vP = new ppunto[num];
for(i=0;i<num;i++) vP[i] = new punto;
// cargar unos valores del modo que solicitas
for(i=0;i<num;i++) {
vP[i]->x = i;
vP[i]->y = i+1;
}
// mostrar del mismo modo
for(i=0;i<num;i++)
cout << vP[i]->x << " " << vP[i]->y << endl;
delete[]vP;
cin.get();
return 0;
}
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 06-11-2012 a las 22:59:29. Razón: agregar comentarios |
|
#3
|
|||
|
|||
|
Saludos..
Me alegro haberme registrado en el foro. Ahora me quedo claro como el agua lo de mi duda.. ![]() (Ojalá y los maestros de la escuela fueran tan claros con estos detallines... )Gracias por tu tiempo ecfisa... |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Duda convertir de int a char array | mizzard | C++ Builder | 3 | 17-04-2011 11:14:47 |
| Duda con un array de Timers | vejerf | OOP | 7 | 15-10-2008 16:02:07 |
| Duda con Record o Array | Paulao | Varios | 2 | 23-08-2008 15:11:42 |
| Duda con string i array | adrall | Varios | 4 | 01-07-2008 03:29:17 |
| duda: pasar array de estructuras entre forms distintos | waremovil | C++ Builder | 9 | 04-12-2007 23:19:08 |
|