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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Cadenas de caracteres con punteros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Cadenas de caracteres con punteros  (Leído 2,272 veces)
pedroedlp

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Cadenas de caracteres con punteros
« en: 11 Abril 2014, 04:19 am »

Estoy estudiando C, y hasta ahora las cadenas de caracteres las venia creando asi:

Código:

char cadena[] = "Hola como te va";


pero ahora me encontre que tambien se puede hacer asi:

Código:

char* cadena = "Hola como te va";


y no entiendo porque funciona, osea por lo que entiendo los punteros son para aputar a direcciones de otras variables, pero en este caso lo estaria usando para guardar en el una cadena de texto, no entiendo porque funciona, porque crea en el un array.


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Cadenas de caracteres con punteros
« Respuesta #1 en: 11 Abril 2014, 05:44 am »

Estoy estudiando C, y hasta ahora las cadenas de caracteres las venia creando asi:
Código
  1. char cadena[] = "Hola como te va";
Esa sentencia declara al array "cadena" y sus elementos se inicializan con 'H', 'l', etc.

pero ahora me encontre que tambien se puede hacer asi:
Código
  1. char *cadena = "Hola como te va";
y no entiendo porque funciona [...] en este caso lo estaria usando para guardar en el una cadena de texto
Funciona porque el valor inicial del puntero "cadena" es la dirección en memoria donde se almacena la cadena literal "Hola como te va". No se esta almacenando en el la cadena sino su dirección. Caso similar con el cartero: el no confunde la dirección en el sobre (un puntero) con el objeto que debe localizar (la casa).

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
pedroedlp

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: Cadenas de caracteres con punteros
« Respuesta #2 en: 11 Abril 2014, 19:55 pm »

Esa sentencia declara al array "cadena" y sus elementos se inicializan con 'H', 'l', etc.
Funciona porque el valor inicial del puntero "cadena" es la dirección en memoria donde se almacena la cadena literal "Hola como te va". No se esta almacenando en el la cadena sino su dirección. Caso similar con el cartero: el no confunde la dirección en el sobre (un puntero) con el objeto que debe localizar (la casa).

Un saludo

pero si vos me decis que en ese puntero se almacena la direccion de la cadena "Hola como te va", porque cuando quiero imprimir la cadena no se pone el astarisco?

Código:

    char *cadena = "Hola como te va";
    printf("%s", cadena);


En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Cadenas de caracteres con punteros
« Respuesta #3 en: 11 Abril 2014, 21:12 pm »

pero si vos me decis que en ese puntero se almacena la direccion de la cadena "Hola como te va", porque cuando quiero imprimir la cadena no se pone el astarisco?

Código:

    char *cadena = "Hola como te va";
    printf("%s", cadena);



Porque el puntero apunta al primer caracter de la cadena, ni más ni menos. Otra cosa es la cadena entera.

Puedes comprobarlo con:


Código
  1. printf("%c", *cadena);

Citar
H

¿Ves como apunta al primer caracter?. Ya si quieres la cadena entera usas cadena sin el asterisco inicial y, como cadena que es, con el formato %s en el printf.

¡¡¡¡ Saluditos! ..... !!!!


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Cadenas de caracteres con punteros
« Respuesta #4 en: 12 Abril 2014, 17:25 pm »

pero si vos me decis que en ese puntero se almacena la direccion de la cadena "Hola como te va", porque cuando quiero imprimir la cadena no se pone el astarisco?
Código
  1. char *cadena = "Hola como te va";
  2. printf("%s", cadena);
Porque cuando utilizas la función printf con el especificador "%s" esta espera la dirección en memoria (puntero) del objeto (array) cuyo contenido (cadena) debe procesar (imprimir).

En el lenguaje C los arrays no se pasan por valor, en su lugar se pasa su dirección en memoria.

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] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Cadenas de caracteres « 1 2 »
Programación C/C++
Angel Zero 10 9,052 Último mensaje 4 Junio 2011, 18:38 pm
por Angel Zero
unir cadenas mediante punteros
Programación C/C++
;c1v!c 6 4,675 Último mensaje 4 Noviembre 2011, 06:10 am
por do-while
Cadenas de caracteres
Programación C/C++
carmelina 2 2,352 Último mensaje 7 Mayo 2012, 03:46 am
por andres_5
Acceder a los caracteres de un array de punteros
Programación C/C++
David8 5 2,246 Último mensaje 6 Mayo 2014, 12:24 pm
por eferion
problema con array de punteros a cadenas « 1 2 »
Programación C/C++
MessageBoxA 12 5,399 Último mensaje 11 Julio 2014, 21:39 pm
por CalgaryCorpus
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines