elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Pregunta puntero a char en c++?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: ¿Pregunta puntero a char en c++?  (Leído 4,248 veces)
Zodiak98

Desconectado Desconectado

Mensajes: 120


Ver Perfil
¿Pregunta puntero a char en c++?
« en: 21 Abril 2013, 23:57 pm »

Hola bueno tengo una duda por ejemplo una variable de tipo char almacena 1 solo dato pero en un ejemplo vi un código en el cual hay un puntero de tipo char asi:

char* nombre = "Yahoo";

Qué según tengo entendido es para que la variable de tipo char almacene ma sde 1 dato, pero ahora aquí vamos a mi duda porqué se coloca el simbolo de indirección(*) porque mejor no hacerlo con un array? O es qué al colocar ese puntero esa variable se convierte en un array? Expliquenme detalladamente por favor...


En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: ¿Pregunta puntero a char en c++?
« Respuesta #1 en: 22 Abril 2013, 00:23 am »

Los char* son la excepción a los punteros. Por ayuda sintactica se permite:
Código
  1. char nombre[] = "Yahoo";
  2. char* nombre = "Yahoo";

Ambos significan lo mismo. De hecho un array no es más que un puntero a su primer elemento.


En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Zodiak98

Desconectado Desconectado

Mensajes: 120


Ver Perfil
Re: ¿Pregunta puntero a char en c++?
« Respuesta #2 en: 22 Abril 2013, 01:12 am »

Los char* son la excepción a los punteros. Por ayuda sintactica se permite:
Código
  1. char nombre[] = "Yahoo";
  2. char* nombre = "Yahoo";

Ambos significan lo mismo. De hecho un array no es más que un puntero a su primer elemento.

Hehe grax me aclaraste la duda pero una cosa pero podrias explicarme este concepto:
Citar
De hecho un array no es más que un puntero a su primer elemento.

La verdad soy nuevo, perdona mi ignorancia. D:

Sí se que es un arreglo, pero no entendi ese concepto podrias explicarmelo? :)

Si puedes un ejemplo tmb. :)
En línea

durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: ¿Pregunta puntero a char en c++?
« Respuesta #3 en: 22 Abril 2013, 02:40 am »

Tal vez: El nombre del array no es mas que un puntero que apunta al primer elemento xD. Al ser un puntero se lo puede tratar como tal, por ejemplo:

Código
  1. char arrNombre[]="Yahoo";
  2.  
  3. printf("%c\n",arrNombre[i]); /* imprime un caracter usando subindices */

printf("%c\n",*(arrNombre+i)); /* imprime un caracter usando aritmetica de punteros */


Saludos

PD: en el proceso de compilacion se traduce arrNombre en *(arrNombre+i)

PD:
Citar
según tengo entendido es para que la variable de tipo char almacene ma sde 1 dato
la palabra no seria almacenar sino apuntar, ya que en el caso del char * lo que hace nombre es apuntar a la direccion donde se encuentra la palabra "Yahoo"
En línea

Ahorrate una pregunta, lee el man
Zodiak98

Desconectado Desconectado

Mensajes: 120


Ver Perfil
Re: ¿Pregunta puntero a char en c++?
« Respuesta #4 en: 22 Abril 2013, 23:03 pm »

Tal vez: El nombre del array no es mas que un puntero que apunta al primer elemento xD. Al ser un puntero se lo puede tratar como tal, por ejemplo:

Código
  1. char arrNombre[]="Yahoo";
  2.  
  3. printf("%c\n",arrNombre[i]); /* imprime un caracter usando subindices */

printf("%c\n",*(arrNombre+i)); /* imprime un caracter usando aritmetica de punteros */


Saludos

PD: en el proceso de compilacion se traduce arrNombre en *(arrNombre+i)

PD: la palabra no seria almacenar sino apuntar, ya que en el caso del char * lo que hace nombre es apuntar a la direccion donde se encuentra la palabra "Yahoo"

Wey disculpa mi ignorancia pero no te entendi lo que quiero saber es porque un arreglo no es mas que un puntero que apunta a su primer elemento. osea por ejemplo:

char foro[] = "ElHacker.Net";

Osea que foro[] es un puntero hacia E? y E Apunta hacia los demas caracteres.??

No entiendo solo quiero saber eso.
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: ¿Pregunta puntero a char en c++?
« Respuesta #5 en: 22 Abril 2013, 23:32 pm »

y E Apunta hacia los demas caracteres.??
No, los demás caracteres están consecutivos en la memoria. De modo que solo tiene que ir avanzando.
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
SARGE553413

Desconectado Desconectado

Mensajes: 176


Ver Perfil
Re: ¿Pregunta puntero a char en c++?
« Respuesta #6 en: 22 Abril 2013, 23:39 pm »

Saludos.

Un array es un puntero al primer elemento de éste, como dices en tu ejemplo, efectivamente apunta a la letra 'E'. De hecho te invito a que pruebes esto:
Código:
char c[]="Puntero";
cout<<*c<<endl;
cout<<*(c+(1*sizeof(char)))<<endl;

Comprobarás que sale por pantalla la letra 'P' y luego la 'u'.

Pero un array tiene la salvedad de que está indexado, es decir, podemos acceder a sus componentes sin pasar primero por todas las anteriores (por ej. v[5] --> accedo directamente a la 6ª componente), cosa que por ej. una lista enlazada de nodos, no.
No estoy seguro, pero al acceder a los índices del array en cuestión, me imagino que tomará el puntero al primer elemento y le sumara n*sizeof(<tipo_array>), tal como he hecho en mi ejemplo.

Saludos.
En línea

Zodiak98

Desconectado Desconectado

Mensajes: 120


Ver Perfil
Re: ¿Pregunta puntero a char en c++?
« Respuesta #7 en: 23 Abril 2013, 04:01 am »

Saludos.

Un array es un puntero al primer elemento de éste, como dices en tu ejemplo, efectivamente apunta a la letra 'E'. De hecho te invito a que pruebes esto:
Código:
char c[]="Puntero";
cout<<*c<<endl;
cout<<*(c+(1*sizeof(char)))<<endl;

Comprobarás que sale por pantalla la letra 'P' y luego la 'u'.

Pero un array tiene la salvedad de que está indexado, es decir, podemos acceder a sus componentes sin pasar primero por todas las anteriores (por ej. v[5] --> accedo directamente a la 6ª componente), cosa que por ej. una lista enlazada de nodos, no.
No estoy seguro, pero al acceder a los índices del array en cuestión, me imagino que tomará el puntero al primer elemento y le sumara n*sizeof(<tipo_array>), tal como he hecho en mi ejemplo.

Saludos.

Orale amigo gracias alfín entiendo xDD Bueno osea que esto:

Citar
     char c[]="Puntero";
    cout<<*c<<endl;
    cout<<*(c+(1*sizeof(char)))<<endl;

y esto:
Citar
     char c[]="Puntero";
     cout << c[0] << endl;
    cout << c[1] << endl; 

Es exactamente lo mismo, o existe alguna diferencia? :) A mi parecer es exactamente lo mismo. Pero claro soy un novato xD

En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: ¿Pregunta puntero a char en c++?
« Respuesta #8 en: 23 Abril 2013, 08:19 am »

Es exactamente lo mismo.

De hecho [] es un operador de punteri E_E
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: ¿Pregunta puntero a char en c++?
« Respuesta #9 en: 23 Abril 2013, 09:53 am »

Aclarar que estas declaraciones no equivalen exactamente lo mismo:

char nombre[] = "Yahoo";
char* nombre = "Yahoo";

El primero Declara un array de char´s y copia la cadena "Yahoo" al array.
El segundo es de un puntero a la cadena por lo tanto lo unico que se copia el la dirección de la cadena.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
martiz de char doble puntero
Programación C/C++
neo_from_cs_matrix 2 5,099 Último mensaje 15 Julio 2011, 00:05 am
por rir3760
Problema: Tamaño de Puntero char
Programación C/C++
yovaninu 8 4,478 Último mensaje 16 Agosto 2011, 14:56 pm
por Gallu
duda doble puntero char a matriz de char
Programación C/C++
neo_from_cs_matrix 3 5,008 Último mensaje 5 Septiembre 2011, 03:53 am
por rir3760
Ayuda convirtiendo puntero void a unsigned char y obtener su valor
Programación C/C++
harry_the_blogger 4 1,866 Último mensaje 5 Octubre 2014, 21:40 pm
por harry_the_blogger
Pasar vector de puntero a char a las funciones[C] « 1 2 »
Programación C/C++
NOB2014 16 6,302 Último mensaje 22 Junio 2016, 14:56 pm
por NOB2014
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines