Autor
|
Tema: [AYUDA] Código mal escrito. (Leído 2,895 veces)
|
Zodiak98
Desconectado
Mensajes: 120
|
Necesito ayuda con este código qué para uds seguro es algo sencillo de resolverme. Este es el código: # include <iostream> using namespace std; void muestraD_arreglo(int **pArreglo[]) { cout << pArreglo[0] << endl; cout << pArreglo[1] << endl; cout << pArreglo[2] << endl; cout << pArreglo[3] << endl; } int main() { int b = 15 , c = 30 , d = 29 , e = 76 ; int *a[4]; a[0] = &b; a[1] = &c; a[2] = &d; a[3] = &e; muestraD_arreglo(&a); system("pause>nul"); return 0; }
Lo qué intento hacer es pasar la dirección de memoria de un arreglo que a la vez es un puntero.
|
|
« Última modificación: 18 Mayo 2013, 01:56 am por Zodiak98 »
|
En línea
|
|
|
|
CCross
Desconectado
Mensajes: 36
|
Hola prueba de esta forma, te imprimira cada direccion de las variables apuntada por el vector de punteros creo que es eso lo que buscas. #include <iostream> using namespace std; void muestraD_arreglo(int* pArreglo[]) { cout << (int)pArreglo[0] << endl; // Si quieres los valores seria *pArreglo[0] cout << (int)pArreglo[1] << endl; cout << (int)pArreglo[2] << endl; cout << (int)pArreglo[3] << endl; } int main() { int b = 15 , c = 30 , d = 29 , e = 76 ; int *a[4]; a[0] = &b; a[1] = &c; a[2] = &d; a[3] = &e; muestraD_arreglo(a); cin.get(); return 0; }
Saludos
|
|
« Última modificación: 18 Mayo 2013, 03:29 am por CCross »
|
En línea
|
|
|
|
Zodiak98
Desconectado
Mensajes: 120
|
Hola prueba de esta forma, te imprimira cada direccion de las variables apuntada por el vector de punteros creo que es eso lo que buscas. #include <iostream> using namespace std; void muestraD_arreglo(int* pArreglo[]) { cout << (int)pArreglo[0] << endl; // Si quieres los valores seria *pArreglo[0] cout << (int)pArreglo[1] << endl; cout << (int)pArreglo[2] << endl; cout << (int)pArreglo[3] << endl; } int main() { int b = 15 , c = 30 , d = 29 , e = 76 ; int *a[4]; a[0] = &b; a[1] = &c; a[2] = &d; a[3] = &e; muestraD_arreglo(a); cin.get(); return 0; }
Saludos Hehe gracias, pero ya había intentado eso. Lo qué intento hacer es, no pasar la direcciones de memoria que almacena el arreglo, si no, la dirección de memoria de cada arreglo como tal. En pocas palabras un doble puntero. Un doble puntero "simple" se pasaría así: int main() { int a = 20; int *b = &a; pPuntero(&b); } //Y la función tendria esta forma: void pPuntero(int **p) { cout << p << endl; //Muestra dirección del puntero 'b'. cout << *p << endl; //Muestra dirección de la variable a la que apunta el primer puntero 'b'. cout << **p << endl; //Muestra el valor de la variable a la que apunta el primer puntero 'b'. }
Ahora estoy tratando de hacer eso mismo pero con un arreglo.
|
|
« Última modificación: 18 Mayo 2013, 16:05 pm por Zodiak98 »
|
En línea
|
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
Ahora estoy tratando de hacer eso mismo pero con un arreglo.
Es igual pero sustituyendo el [] por un asterisco en la definición de la función: #include <iostream> using namespace std; void muestraD_arreglo(int** pArreglo) { cout << (int)pArreglo[0] << endl; cout << (int)pArreglo[1] << endl; cout << (int)pArreglo[2] << endl; cout << (int)pArreglo[3] << endl; } int main() { int b = 15 , c = 30 , d = 29 , e = 76 ; int *a[4]; a[0] = &b; a[1] = &c; a[2] = &d; a[3] = &e; muestraD_arreglo(a); cin.get(); return 0; }
O si lo prefieres: #include <iostream> using namespace std; void muestraD_arreglo(int** pArreglo) { cout << (int) *(pArreglo) << endl; cout << (int) *(pArreglo+1) << endl; cout << (int) *(pArreglo+2) << endl; cout << (int) *(pArreglo+3) << endl; } int main() { int b = 15 , c = 30 , d = 29 , e = 76 ; int *a[4]; a[0] = &b; a[1] = &c; a[2] = &d; a[3] = &e; muestraD_arreglo(a); cin.get(); return 0; }
Al fin al cabo, el [] no es más que una comodidad sintática. Se puede variar como quieras. El código de CCross era correcto.
|
|
« Última modificación: 18 Mayo 2013, 16:07 pm por amchacon »
|
En línea
|
|
|
|
Zodiak98
Desconectado
Mensajes: 120
|
Creo qué no me he explicado bien. Lo qué trato de hacer es pasar la dirección de a[0], a[1], a[2], a[3]. Ya qué cada uno tiene su dirección de memoria, esas direcciones son las que intento pasar. Qué a la vez son punteros que contienen almacenadas otras direcciones. Hehe amchacon ya esta listo, no me había fijado en el segundo código que me pasaste.
|
|
« Última modificación: 18 Mayo 2013, 16:18 pm por Zodiak98 »
|
En línea
|
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
Hehe amchacon ya esta listo, no me había fijado en el segundo código que me pasaste. Los tres códigos que se han posteado son equivalentes, es escribir lo mismo de distintas formas. El operador [] es un operador de puntero al igual que * y &.
|
|
|
En línea
|
|
|
|
Zodiak98
Desconectado
Mensajes: 120
|
Hehe perdonen mi ignorancia. Pero sigo sin entender una cosa, es decir, que al yo hacer esto: #include <iostream> using namespace std; void muestraD_arreglo(int *pArreglo[]) { cout << (pArreglo) << endl; cout << (pArreglo + 1) << endl; cout << (pArreglo + 2) << endl; cout << (pArreglo + 3) << endl; } int main() { int b = 15 , c = 30 , d = 29 , e = 76 ; int *a[4]; a[0] = &b; a[1] = &c; a[2] = &d; a[3] = &e; muestraD_arreglo(a); cin.get(); return 0; }
Automaticamente me envia las dirreciones de memoria de cada arreglo?, es decir, &a[0], &a[1],&a[2],&a[3]. Hehe me puse a practicar una cosa y ya me di cuenta el porque. Hehe Debo aprender a no preguntar tanto sin si quiera hacer las cosas. >__<
|
|
« Última modificación: 18 Mayo 2013, 16:44 pm por Zodiak98 »
|
En línea
|
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
Automaticamente me envia las dirreciones de memoria de cada arreglo?, es decir, &a[0], &a[1],&a[2],&a[3]. En un arreglo, las variables se guardan consecutivamente en la memoria. De ahí que en el ejemplo haya puesto (+1,+2,+3...). Pero supongo que ya te has dado cuenta
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Escrito sobre VMWare.
Tutoriales - Documentación
|
NemeSys
|
0
|
7,091
|
3 Febrero 2005, 07:22 am
por NemeSys
|
|
|
Borrar registro una ves escrito
Programación Visual Basic
|
IvanUgu
|
3
|
1,800
|
7 Septiembre 2005, 06:12 am
por Slasher-K
|
|
|
Servidor web escrito en C
Programación C/C++
|
Psicotron
|
7
|
5,693
|
8 Septiembre 2016, 19:48 pm
por AlbertoBSD
|
|
|
Algoritmo escrito en C
Programación C/C++
|
Kyon-san
|
7
|
5,985
|
25 Noviembre 2010, 22:04 pm
por ace332
|
|
|
Crear arbol sintactico para analizar un codigo fuente escrito en C++
Programación C/C++
|
Ytsejam92
|
3
|
3,117
|
29 Septiembre 2016, 20:40 pm
por dato000
|
|