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
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.
Otra opción sería esta:
char *pm = claveHabitacion[9];
Vale eso lo entiendo pero como imprimiria solamente esa posicion la 9
Cita de: Jay en 5 Mayo 2019, 21:17 PM
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
claveHabitacion[9]
de nuevo, SIN &. O bien, haz como te dijo YreX-DwX, y manda a imprimir pm, y ya.