Autor
|
Tema: Asunto con punteros y arreglos en c (Leído 2,102 veces)
|
Jay
Desconectado
Mensajes: 26
|
Hola tengo un arreglo bidimensional inicializado aqui, me gustaria saber como crear un apuntador que me apunte a un dato de este arreglo. char claveHabitacion [10][10] = {"ST1", "ST2", "ST3", "ST4", "ST5", "ST6", "ST7", "ST8", "ST9", "ST10"};
char *pm;
pm=&claveHabitacion[9]; //por ejemplo aqui le digo que me asigne ala direccion de la posicion 9 de mi arreglo pero me marca un warning y no se imprime
pm=&claveHabitacion; // al igual al hacer esto me sige marcando warning y no se imprime se supone que deberia imprimirse el arreglo pero
porfavor ayuda por ejemplo yo solo quiero apuntar a ST1 y eso es lo que necesito imprimir ST1 es un elemento del arreglo
|
|
|
En línea
|
|
|
|
Loretz
Desconectado
Mensajes: 117
|
Va en el ejemplo: #include <iostream> int main() { char claveHabitacion[10][10] = { "ST1", "ST2", "ST3", "ST4", "ST5", "ST6", "ST7", "ST8", "ST9", "ST10" }; char* pm; // pm = &claveHabitacion[9]; /* el problema aquí es que &claveHabitacion[9] es de tipo char(*)[10] y no puede asignarse a un char* Pero puedes hacer: */ pm = reinterpret_cast<char*>(&claveHabitacion[9]); std::cout << pm; }
Pero ten presente que usar reinterpret_cast se entiende como cuando un yogur está de oferta dos horas antes del vencimiento, no sé si me explico.
|
|
« Última modificación: 4 Mayo 2019, 01:04 am por Loretz »
|
En línea
|
|
|
|
K-YreX
|
Otra opción sería esta: char *pm = claveHabitacion[9];
|
|
|
En línea
|
cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
|
|
|
Jay
Desconectado
Mensajes: 26
|
Vale eso lo entiendo pero como imprimiria solamente esa posicion la 9
|
|
|
En línea
|
|
|
|
RayR
Desconectado
Mensajes: 243
|
Vale eso lo entiendo pero como imprimiria solamente esa posicion la 9
Pues exactamente como te dijo YreX-DwX. Tu problema era que estabas usando el operador de dirección & cuando no debías, complicando un problema que en realidad es muy simple. Cada uno de los 10 elementos del arreglo claveHabitacion es a su vez un arreglo char. Tan solo con que escribas claveHabitacion[0] // O claveHabitacion[1], etc ya te estás refiriendo a una cadena, y no necesitas hacer nada más. Así, para imprimir la cadena en la posición 9, simplemente pide a printf que imprima de nuevo, SIN &. O bien, haz como te dijo YreX-DwX, y manda a imprimir pm, y ya.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Duda Punteros Dobles/Array de punteros
Programación C/C++
|
MisterJava
|
2
|
5,167
|
30 Diciembre 2012, 20:19 pm
por MisterJava
|
|
|
Arreglos,punteros y sprintf.-
Programación C/C++
|
DanielPy
|
4
|
2,839
|
13 Diciembre 2013, 17:50 pm
por DanielPy
|
|
|
Punteros dobles / Punteros a puntero.
Programación C/C++
|
NOB2014
|
5
|
8,416
|
13 Abril 2016, 16:00 pm
por MAFUS
|
|
|
[C] (Consulta) Mezclando punteros y arreglos.
Programación C/C++
|
class_OpenGL
|
5
|
4,603
|
16 Mayo 2016, 18:51 pm
por class_OpenGL
|
|
|
Duda con correspondencia entre arreglos y punteros en C++
Programación C/C++
|
retr02332
|
3
|
3,318
|
2 Junio 2020, 19:37 pm
por RayR
|
|