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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Como definir una cadena constante
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como definir una cadena constante  (Leído 3,223 veces)
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Como definir una cadena constante
« en: 21 Enero 2012, 00:52 am »

Buenas estoy algo confundido para definir una constante de cadena, porque e visto que exite las directivas "define", "const", o
tambien asi: char* lp = "constante" , o asi: char var[8] = "testing"
mas que todo lo que quiero es que la cadena se almacene dentro del binario asi en cadenas grande es mas rapido el programa :P



En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Como definir una cadena constante
« Respuesta #1 en: 21 Enero 2012, 01:41 am »

No te funciona "const char *x = "jkaklsjljkasd"; ?


En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Como definir una cadena constante
« Respuesta #2 en: 21 Enero 2012, 01:45 am »

OK gracias pero y cual es la diferencia entre las demas? :P
mas que todo busco eso, que sea constante

En línea

seba123neo


Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Como definir una cadena constante
« Respuesta #3 en: 21 Enero 2012, 01:53 am »

“static const” vs “#define” in c
En línea

Xandrete

Desconectado Desconectado

Mensajes: 210



Ver Perfil
Re: Como definir una cadena constante
« Respuesta #4 en: 21 Enero 2012, 02:08 am »

¡Hola!

"define" es una directiva del preprocesador. Básicamente, al utilizar #define NOMBRE COSA. lo que hace el compilador es sustituir todas las ocurrencias de NOMBRE que haya en tu código por COSA. Y aquí, COSA puede ser cualquier cosa, valga la redundancia. Un número, un carácter o incluso un fragmento de código. Date cuenta de que con un define no hace falta especificar tipo de dato, básicamente porque con un define NO se declara una variable.

Const se utiliza cuando quieres que no se modifique una variable en tiempo de ejecución. Si el compilador "se da cuenta" de que tratas de asignar un nuevo valor a una variable declarada como const, aborta el proceso de compilación y te avisa de ello. La variable en sí existe en la memoria física.

char* lp = "constante" es perfectamente válido. Me gustaría comentarte que en char var[8] = "testing" no hace falta que pongas el 8 entre los corchetes. El compilador sabe contar, así que puedes poner perfectamente var[] = "testing". Creo que la confusión que tienes respecto a una forma y otra es que no sabes que una cadena o secuencia, en C, no es más que un puntero al primer elemento de dicha secuencia. char* lp = "asdf", char lp[] = "asdf" y char lp[4] = "asdf" hacen exactamente lo mismo.

¿Qué la cadena se almacene dentro del binario? ¿Dónde se iba a almacenar, si no en el binario? Supongo que te refieres a que la cadena se almacene en la sección de datos. ¿Es eso a lo que te refieres? El compilador se encarga de ello convenientemente.

Saludos
« Última modificación: 21 Enero 2012, 02:11 am por Xandrete » En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Como definir una cadena constante
« Respuesta #5 en: 21 Enero 2012, 02:12 am »

@Xandrete =D hey gracias
si y me referia a eso! que se almacene en el segmento de datos, aja y pues ahora que lo dices
leí eso, de que el compilador decide o no guardarla en el binario :P esta raro, porque deberia
guardarla en el binario en vez de guardarla en tiempo de ejecucion :P
En línea

Xandrete

Desconectado Desconectado

Mensajes: 210



Ver Perfil
Re: Como definir una cadena constante
« Respuesta #6 en: 21 Enero 2012, 02:24 am »

Te pongo un ejemplo.

Pongamos que en algún lugar del código haces char* c = "SPAM", y más adelante haces c = "FOO". El compilador se guarda la cadena "SPAM" y la cadena "FOO" en el segmento de datos. En la primera asignación de c se le da la dirección de memoria a la "S" de "SPAM". En la segunda asignación se le da a c la dirección de memoria a la "F" de "FOO". End of the line.

¿Guardarla en tiempo de ejecución? ¿Cómo se podría hacer tal cosa? La cadena tiene que existir en algún lugar.

Saludos.
En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Como definir una cadena constante
« Respuesta #7 en: 21 Enero 2012, 02:25 am »


El operador static tiene otro uso...

Dulces Lunas!¡...

EI: juntando mensajes.

lo mas conveniente serian:

Código
  1.  
  2. const char* CADENA_SPAM = "SPAM";
  3. ///o
  4. const char CADENA_SPAM[] = "SPAM";  // <- Yo me inclino por esta...
  5.  
  6.  

Recomendación: Para que encuentre y sepas que son constantes escribe el nombre de la constante en mayusculas.
« Última modificación: 21 Enero 2012, 02:39 am por Eternal Idol » En línea

The Dark Shadow is my passion.
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Como definir una cadena constante
« Respuesta #8 en: 21 Enero 2012, 02:59 am »

@BlackZeroX:
Bien! como olvidar eso! found!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Diagrama de BD. Como definir moderador para cada foro « 1 2 »
Bases de Datos
Hadess_inf 15 12,102 Último mensaje 21 Noviembre 2009, 03:26 am
por ^Tifa^
Como declarar una constante publica en una clase ???
Programación C/C++
gonzaloi 3 3,672 Último mensaje 8 Junio 2010, 17:25 pm
por gonzaloi
como cambiar cadena ingresada en un TEdit
Programación C/C++
goroachy 2 1,885 Último mensaje 14 Octubre 2014, 08:26 am
por goroachy
Cómo definir un valor de una cifra a otra
Programación C/C++
Miketo 2 1,601 Último mensaje 28 Junio 2017, 00:16 am
por Miketo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines