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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  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,246 veces)
amchacon


Desconectado Desconectado

Mensajes: 1.211



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

Ambas sentencias son equivalentes puesto que tienen el mismo uso de memoria y se usan igual.

Además cómo ya hemos dicho,  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
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: ¿Pregunta puntero a char en c++?
« Respuesta #11 en: 23 Abril 2013, 17:01 pm »

tengo una duda por ejemplo una variable de tipo char almacena 1 solo dato
Correcto. Si deseas almacenar mas no hay otra opción que utilizar un array.

pero en un ejemplo vi un código en el cual hay un puntero de tipo char asi:
Código
  1. char* nombre = "Yahoo";
Qué según tengo entendido es para que la variable de tipo char almacene ma sde 1 dato
No. Una variable de tipo "puntero a T" solo puede almacenar la dirección de un objeto, lo que almacene el objeto apuntado es otra historia.

pero ahora aquí vamos a mi duda porqué se coloca el simbolo de indirección(*)
Porque es una declaración y en ella la única forma de indicar que la variable es un puntero es mediante el carácter '*', no hay '*' entonces no hay puntero:
Código
  1. int numero; /* variable de tipo "int" */
  2. int *p;     /* variable de tipo "puntero a int" */

----

Ambas sentencias son equivalentes puesto que tienen el mismo uso de memoria y se usan igual.
No. Ya lo indicaron durasno y x64Core, solo voy a explicarlo un poco mas.

Cuando se declara un array puede utilizarse como valor inicial una cadena literal pero esta es equivalente a una lista de valores. Siguiendo tu ejemplo:
Código
  1. /* Esta declaracion ... */
  2. char nombre[] = "Yahoo";
  3.  
  4. /* ... se termina procesando de esta forma */
  5. char nombre[] = {'Y', 'a', 'h', 'o', 'o', '\0'};

Otra historia es la declaración de un puntero inicializando este mediante una literal:
Código
  1. char* nombre = "Yahoo";
Aquí la cadena literal "Yahoo" es de tipo array de caracteres, se almacena en alguna dirección en memoria y es esa dirección el valor inicial del puntero.

Además cómo ya hemos dicho,  un array no es más que un puntero a su primer elemento.
No. Los arrays y punteros son objetos distintos.

El detalle (o problema, depende de la perspectiva) es: denotar (referirse a) un array mediante su nombre o una expresión resulta (salvo contados casos) en la dirección del primer elemento del array.

El caso mas conocido es el uso de scanf, cuando se trata con esta de leer una palabra utilizamos el nombre de un array sin el operador '&':
Código
  1. char nombre[100];
  2. char (*p)[100] = &nombre;
  3.  
  4. /* Para indicar que array usar utilizamos: */
  5.  
  6. puts("Teclea tu nombre:");
  7. scanf("%s", nombre /* 1) Su nombre */);
  8.  
  9. puts("Teclea tu nombre:");
  10. scanf("%s", *p /* 2) Una expresion */);

Uno de los pocos casos donde ello no aplica es el uso del operador sizeof, si su argumento es un array declarado en el mismo ámbito este reportara correctamente el tamaño del array.

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
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