Hola, intento copiar un array de strings a otro nuevo, pero este se queda null, no se como copiarlo, os pongo el código que pongo (caso 1 y 2)
Caso 1: El clon sigue vacio, el say dice '0'
PRIVATE
mis_frases[2] = "ola", "tonto", "doom!";
clon[2];
BEGIN
clon[2] = mis_frases[2];
say(clon[1]);
Caso 2: El clon sigue vacio, el say dice '0'
PRIVATE
string mis_frases[2] = "ola", "tonto", "doom!";
string clon[2];
BEGIN
clon[2] = mis_frases[2];
say(clon[1]);
Otra cosas,
1 - Imaginad, que tengo otro array llamado tus_frases[5], y segun un parametro de entrada (mio_o_tuyo) quiero que el clon sea una copia de uno
o de otro, pero claro, partiendo del principio que no se la dimension del array que quiero copiar (o sea, quiero que la dimensión del clon sea dinamica,
y se quede con la dimensión del array origen cuando creo el clon).
2 - Me gustaria tambien saber como referenciarlo usando un puntero en lugar de crear una copia nueva.
Gracias ;)
mmm en el says pones que muestre la posicion [1], pero lo que estas copiando es la posicion [2]. (No estoy muy seguro si con los string copias la data o solo referencias la data).
y para el resto:
1. Usar punteros para el tamaño de array dinamico.
2. Ni idea, tengo que leer sobre esto, Splinter hace tiempo puso un link muy bueno acerca de punteros (en ingles). Buscalo como manejo de punteros en bennu o algo asi, ojala el se pronuncie ya que no me acuerdo el nombre del hilo :P
Gracias.
Si me he fijado que estoy copiando el valor de la posición, pero queria copiar todo el array.
como ya te respondieron, estas copiando el elemento 2 e imprimiendo el 1, no es logico.
si lo que queres es copiar el array entero, solo tenes que hacer lo siguiente (ambos arrays deben tener las mismas dimensiones, y el mismo tipo)
clon = mis_frases;
con respecto a los punteros, podes usar punteros a cualquier cosa, menos a strings... si queres punteros a datos de tipo cadena, usa char[] para guardar las strings.
No funciona Splinter
PRIVATE
mis_frases[2] = "ola", "tonto", "doom!";
clon[2];
BEGIN
clon = mis_frases;
--> clon sigue null
parece que algo se rompio, porque estos test los habia hecho hace tiempo y funcionaban.
ahora vamos a ver que se rompe cuando arregle esto.
Solución temporal:
clon[0]=mis_frases[0];
clon[1]=mis_frases[1];
clon[2]=mis_frases[2];
O usar un bucle for ;D
Splinter: ¿habría algún problema en crear una lista enlazada usando nodos de este tipo?
type nodo
string texto;
nodo pointer ptr;
end
ningun problema
ya tengo localizado el tema, me suena que nunca funciono correctamente eso, por lo menos no con tipos basicos, deberia funcionar con structuras...
la cosa es que tengo que arreglar el tema de que una variable array referenciada sin [] apunta al primer elemento, tengo que quitar eso, salvo para asignarlos a punteros.
va a ser un lindo problema resolverlo, pero lo resolvere, no se cuando, porque se me acabo el feriado y hoy tuve un dia de salud patetico.
Quote from: Drumpi on December 09, 2010, 01:01:32 AM
Solución temporal:
clon[0]=mis_frases[0];
clon[1]=mis_frases[1];
clon[2]=mis_frases[2];
O usar un bucle for ;D
Splinter: ¿habría algún problema en crear una lista enlazada usando nodos de este tipo?
type nodo
string texto;
nodo pointer ptr;
end
Jjajjjajajaja, si soluciones o caminos hay muchos, precisamente si así lo quisiera hacer ni preguntaba xDDD
type nodo
string texto;
nodo pointer ptr;
end
Probado por mí a lo bestia en el visor 3D y la memoria dinámica funciona 100% perfecta.
clon = mis_frases;
Hubiese apostado a que podía hacerse, pero la opción de copiar una a una tampoco cuesta demasiado :P
Si al final ni siquiera voy a copiar, porque no quiero crear tantos vectores en memoria, le pasare distintos valores al mismo array segundo if's y listo. Pero esto es un tema pendiente, y la copia no funciona, me imagino que usas una version antigua.
Quote from: Windgate on December 09, 2010, 11:00:57 AM
type nodo
string texto;
nodo pointer ptr;
end
Probado por mí a lo bestia en el visor 3D y la memoria dinámica funciona 100% perfecta.
clon = mis_frases;
Hubiese apostado a que podía hacerse, pero la opción de copiar una a una tampoco cuesta demasiado :P
yo tambien, pero parece que no, creo que deberia funcionar con structs.
Quote from: FreeYourMind on December 09, 2010, 02:25:24 PM
Si al final ni siquiera voy a copiar, porque no quiero crear tantos vectores en memoria, le pasare distintos valores al mismo array segundo if's y listo. Pero esto es un tema pendiente, y la copia no funciona, me imagino que usas una version antigua.
no importa, igual tengo que darle soporte a eso, por lo que veo mas que un bug (algo que anda mal) parece ser una funcionalidad no implementada.
estoy en ello.
Cierto, las structs sin corchetes apuntan al primer elemento, eso es una feature existente desde DIV. Creo recordar que me sorprendión que Fenix fuera capaz de distinguir cuándo se quería copiar el primer elemento o el array completo perfectamente.
Si las strings se pueden usar con nodos en lugar de con punteros, problema resuelto, ya puedo seguir pensando en el editor de texto :D
creo que ya tengo la solucion, he tenido que tocar mucho, agregar una nueva funcion interna a nivel sysproc (dcb), con lo cual los nuevos dcb no seran ya compatibles con los viejos, sin embargo los viejos pueden correr en el nuevo runtime.
necesito gente que se ofrezca para hacer pruebas, asignaciones de arrays de todo tipo, asignar datos no array, probar con punteros a elementos, variables array de diferentes tipos, etc. tambien operaciones de incremento, operaciones +=, -=, /=, *=, etc.
hay que probarlo bien para darlo por bueno.
demas esta que debo decir que ya no se podra acceder al primer elemento de un array con solo poner su nombre, se tiene que hacer elemento[0] y a su address &elemento o &elemento[0], estaba mal realmente que se acceda sin el indice, sin embargo los dcb ya compilados con el viejo compilador funcionaran sin poner
- .
bueno, si alguien se ofrece me avisa, me dice que plataforma y le genero los ejecutables.
gracias.
Pues ya conoces a algunos de tus betatester xD
aca esta free http://betatester.bennugd.org/snapshot/experimental/
por favor, algun otro que pruebe sus programas, mas alla de las pruebas pedidas, me interesa el funcionamiento en general, que no haya ningun comportamiento extraño.
gracias.
He probado a asignar una string a un array de char y me ha dado error de ejecución, que lo sepas :D
La string era de un sólo carácter así que no es problema de que no entrase.
Quote from: Windgate on December 10, 2010, 07:44:21 PM
He probado a asignar una string a un array de char y me ha dado error de ejecución, que lo sepas :D
La string era de un sólo carácter así que no es problema de que no entrase.
import "mod_say";
import "mod_mem";
private
char s1[10]="hola";
char s2[10];
int lala[1][2]= 1, 2, 3, 4, 5, 6;
int lele[3][2];
int *lili;
char s3[20];
string s4 = "bye";
string sa1[10] = "hola", "mundo", "prueba", "1";
string sa2[10] = "1", "2", "3", "4", "5", "6", "7";
i;
begin
s2 = s1;
say(s2);
lele[0] = lala[1];
say(lele[0][0]);
say(lele[0][1]);
lili = &lala[1][1];
say(lili);
say(*lili);
sa2 = sa1;
for( i = 0; i < 11; i++ )
say( "sa2="+ sa2[i]);
end
say(&lele);
say(&lele[0]);
s3 = "hola";
say(s3);
s3 = s4;
say(s3);
end
a mi me funciona perfecto.
puede que hay armado mal el pack, voy a revisar nuevamente, el pack.
EDIT: Lo chequee, funciona perfecto, cuidado que los nuevos dcb no funcionan con el viejo runtime, si lo intentas correr con el viejo te da runtime error
por favor, insisto que todos prueben, porque si lo doy por bueno y no lo es, nos perjudicamos todos, es un cambio muy importante a nivel interno.
bueno, lo han probado y funciona todo perfecto? subo al svn? despues no hay reclamos si no funcionan sus proyectos.
No deberias tener tanta prisa, danos una semana (yo ando liado con mas cosas y esta prueba requiere calma), o tienes tanta prisa para que ? Entiendo que te guste actualizar el Svn pero tambien lo actualizas demasiado, por cambiar una linea de código ya estas creando una nueva revision!
ojala fuera 1 linea de codigo... tuve que cambiar mucho.
ok, espero unos dias mas.
Yo estoy haciendo algunas pruebas, luego te comento.
gracias!
Me ocurre algo raro, si pongo:
Program prueba_arrays;
import "mod_key";
import "mod_proc";
import "mod_text";
import "mod_wm";
PRIVATE
char cadena5[4];
char cadena3[2]="a", "b","c";
BEGIN
cadena5[1]=cadena3[2];
write(0,10,10,0,cadena5[1]);
while (!(key(_esc)))
frame;
end
let_me_alone();
END
me sale el error: "Data type not accepted here, found "b" en la linea donde declaro la cadena3
Y si lo hago así:
Program prueba_arrays;
import "mod_key";
import "mod_proc";
import "mod_text";
import "mod_wm";
PRIVATE
char cadena5[4];
char cadena3[]="a", "b","c";
BEGIN
cadena5[1]=cadena3[2];
write(0,10,10,0,cadena5[1]);
while (!(key(_esc)))
frame;
end
let_me_alone();
END
Compila pero me muestra la "b" cuando debería mostrar la "c"
es correcto que eso pase, porque estas haciendo un mal uso de los char, lo malo es que te permita declararlos asi y no de error...
los array de chars son strings, entonces, en tu caso, el array declarado asi es...
a 0x00 b 0x00 c x00
proba lo siguiente
Program prueba_arrays;
import "mod_key";
import "mod_say";
import "mod_string";
PRIVATE
char cadena5[4];
char cadena3[]="a", "b","c";
BEGIN
cadena5[1]=cadena3[2];
say(cadena5[1]);
say(asc(cadena3[0]));
say(asc(cadena3[1]));
say(asc(cadena3[2]));
say(asc(cadena3[3]));
say(asc(cadena3[4]));
say(asc(cadena3[5]));
say(cadena3);
say(sizeof(cadena3));
END
Con tu código sigue sin funcionar bien, muestra:
b
97
0
98
0
99
0
a
6
Entonces no se pueden declarar tablas de caracteres? Pensándolo bien tampoco es que tengan mucho sentido, pero era por probar combinaciones.
pero si vos queres arreglos de arrays de la forma que lo estas queriendo referencias deberia ser algo asi...
Program prueba_arrays;
import "mod_say";
import "mod_string";
PRIVATE
char cadena5[4];
char cadena3[2][0]="a", "b","c";
BEGIN
cadena5[1]=cadena3[2];
say(cadena5[1]);
say(cadena3[0]);
say(cadena3[1]);
say(cadena3[2]);
say(sizeof(cadena3));
say(sizeof(cadena3[0]));
say(sizeof(cadena3[1]));
say(sizeof(cadena3[2]));
END
aunque el resultado pareciera loco, pero no lo es, la cosa es que al no tener \0 y estar en el mismo contexto/variable se imprimen todos.
mira este otro codigo
Program prueba_arrays;
import "mod_say";
import "mod_string";
PRIVATE
char cadena1[2]="abc";
char cadena2[2]="def";
BEGIN
say(cadena1[0]);
say(cadena1[1]);
say(cadena1[2]);
say(sizeof(cadena1));
END
Quote from: blostec on December 11, 2010, 08:32:28 PM
Con tu código sigue sin funcionar bien, muestra:
b
97
0
98
0
99
0
a
6
Entonces no se pueden declarar tablas de caracteres? Pensándolo bien tampoco es que tengan mucho sentido, pero era por probar combinaciones.
si funciona bien, al ser "[]" sin tamaño definido, "a" significa "a" + 0, y lo mismo con todos.
creo que lo que esta mal es que te deje declarar el ultimo elemento de esa forma.
Quote from: SplinterGU on December 11, 2010, 08:33:47 PM
Program prueba_arrays;
import "mod_say";
import "mod_string";
PRIVATE
char cadena5[4];
char cadena3[2][0]="a", "b","c";
BEGIN
cadena5[1]=cadena3[2];
say(cadena5[1]);
say(cadena3[0]);
say(cadena3[1]);
say(cadena3[2]);
say(sizeof(cadena3));
say(sizeof(cadena3[0]));
say(sizeof(cadena3[1]));
say(sizeof(cadena3[2]));
END
pensandolo bien, este codigo no es correcto esto... creo que aca tengo algo mal, voy a revisar la generacion de opcodes...
y 2, no deberia permitir esto:
char lala[]="a", "b", "c";
Quote from: SplinterGU on December 11, 2010, 08:57:55 PM
Quote from: SplinterGU on December 11, 2010, 08:33:47 PM
Program prueba_arrays;
import "mod_say";
import "mod_string";
PRIVATE
char cadena5[4];
char cadena3[2][0]="a", "b","c";
BEGIN
cadena5[1]=cadena3[2];
say(cadena5[1]);
say(cadena3[0]);
say(cadena3[1]);
say(cadena3[2]);
say(sizeof(cadena3));
say(sizeof(cadena3[0]));
say(sizeof(cadena3[1]));
say(sizeof(cadena3[2]));
END
pensandolo bien, este codigo no es correcto esto... creo que aca tengo algo mal, voy a revisar la generacion de opcodes...
y 2, no deberia permitir esto:
char lala[]="a", "b", "c";
vuelvo a rectificarme, el ejemplo, esta bien...
lo que queda mal es no deberia permitir asignar asi a chars sin dimension... eso tendre que corregirlo.
corregido, ya no deja definir asi:
char lala[]="a", "b", "c";
Quote from: SplinterGU on December 11, 2010, 09:39:19 PM
corregido, ya no deja definir asi:
char lala[]="a", "b", "c";
¿Entoces hay que declarar en todas las matrices la dimension obligatoriamente?
no, los char[], son strings... en ese caso, si pones un char [], tenes que poner 1 sola string.
A ver si lo entiendo, siento ser tan pesado.
Esto no se puede hacer:
char cadena1[4]="a", "b", "c", "d", "e";
Se debe poner declarando siempre la dimensión? :
char cadena1[4][0]="a", "b", "c", "d", "e";
En teoría, si queremos un array de 4 char, debráimos hacerlo de una de estas dos formas (al menos, es como se ha hecho hasta ahora:
char cadena[]= "abcd";
char cadena[]= 'a','b','c','d';
Hacerlo así:
char cadena1[4]="a", "b", "c", "d", "e";
significa asignar 5 cadenas. En todo caso sería algo como:
char cadena1[4]="a"+"b"+"c"+"d"+"e";
Corregidme si me equivoco.
esta mal, los char [] son strings fijas...
esta bien tu ultimo ejemplo donde usas +
Quote from: SplinterGU on December 12, 2010, 04:25:17 PM
esta mal, los char [] son strings fijas...
Salvo en el momento de la definición, donde son del tamaño que se indique en la asignación, como todos los arrays ;D
Quote from: Drumpi on December 12, 2010, 04:57:51 PM
Quote from: SplinterGU on December 12, 2010, 04:25:17 PM
esta mal, los char [] son strings fijas...
Salvo en el momento de la definición, donde son del tamaño que se indique en la asignación, como todos los arrays ;D
siguen siendo strings fijas... no podes cambiar el tamaño...
Yo me estoy volviendo loco para pasar una string a un array de char, si se os ha pasado ya por la cabeza la forma de hacerlo fácilmente se agradecerá con un karma :P
Quote from: Windgate on December 14, 2010, 12:47:08 PM
Yo me estoy volviendo loco para pasar una string a un array de char, si se os ha pasado ya por la cabeza la forma de hacerlo fácilmente se agradecerá con un karma :P
char lala[10];
string baba;
...
baba = "esto es simple";
lala = baba; // aca asigno una string a un array de char
lala = "esto tambien es simple"; // aca tambien asigno una string a un array de char
...
wind, no entiendo que es lo que no te sale...
No se supone que un string es un array de char.... yo tampoco entiendo que no le sale....aunque tratandose de Wind..... igual esta intentando una barbarie,que no es lo mismo que esta imitando a una barbie... xP
Quote from: DjSonyk on December 14, 2010, 01:37:09 PM
No se supone que un string es un array de char.... yo tampoco entiendo que no le sale....aunque tratandose de Wind..... igual esta intentando una barbarie,que no es lo mismo que esta imitando a una barbie... xP
bueno, strings y arrays de chars no son lo mismo, pero un se puede asignar a la otra sin problemas.
barbie... jajaja... creo que wind le gustan las barbies, pero de carne y hueso...
Las strings son arrays de char, pero de tamaño indefinido (usan punteros).
Quote from: Drumpi on December 14, 2010, 06:03:40 PM
Las strings son arrays de char, pero de tamaño indefinido (usan punteros).
no, no y no... lo dije unas 1000 veces... las strings en bennugd (y no me vengas con que no hablabas de bennugd) no son arrays a chars, ni tampoco punteros... las strings en bennugd son objetos que se crean y destruyen en cada operacion, por eso es conveniente usar char[].
Drumpi no hablaba de BennuGD :D
Probando con el experimental:
No entiendo muy bien los cambios, son sólo internos o tambien en codigo de Bennu ?
Lo digo porque esto que al principio dabas por valido al copiar un array de strings ahora me da error de incompatible type:
private
CurrentDialog[4] = "a", "b", "c", "d", "e";
Copia[4];
BEGIN
Copia = CurrentDialog;
ya se que deberia tener esto para que no falle:
private
CurrentDialog[4] = "a", "b", "c", "d", "e";
Copia[4] = "", "", "", "", "";
pero no tendria que ser necesario, porque ya has declarado su dimensión aunque no tengas valores asignados (ya se que falla porque tienes valores null)...
Otra cosa (hablando de la r189):
Como te comentaba, en la implementacion final no pienso hacer clones,
ya que no quiero crear arrays en memoria inecesarios, o sea, quiero crear
siempre sólo un array, con condiciones if.
Pues lo que no me mola es que si lo quiero hacer, por ejemplo, declarar
un array en private con valores asignados, se hace así:
PRIVATE
CurrentDialog[4] = "a", "b", "c", "d", "e";
BEGIN ...
Pero si lo quiero hacer en el cuerpo (despúes del begin),
asignar sus valores tiene que ser así:
PRIVATE
CurrentDialog[4];
BEGIN
IF (Lang == 1)
CurrentDialog[0] = "a";
CurrentDialog[1] = "b";
CurrentDialog[2] = "c";
CurrentDialog[3] = "d";
CurrentDialog[4] = "e";
END
IF (Lang == 2)
...
Y lo que molaria es poder hacerlo así (asignar todos sus valores de golpe):
PRIVATE
CurrentDialog[4];
BEGIN
IF (Lang == 1)
CurrentDialog = "a", "b", "c", "d", "e";
END
IF (Lang == 2)
CurrentDialog = "hfr", "dev", "rv", "drv", "cd";
END
...
la declaracion deberia funcionar, probaste poniendo "string CurrentDialog..."?
la asignacion multiple esa que planteas en realtime es una locura, no recuerdo 1 solo lenguaje que permita eso...
pero para eso, diseñas los arrays fijos y luego los copias a tu array de trabajo.
Quote from: SplinterGU on December 15, 2010, 12:48:36 AM
...no recuerdo 1 solo lenguaje que permita eso...
Ten cuidado con estas palabras Splinty que yo las puse una vez y me saltaron que se podia hacer en un lenguaje que no lo conoce ni su tia.... xD
Vamos si que es conocido pero es mas para Web que programación en si, ya que para mi no son mas que nada interpretes....
Quote from: DjSonyk on December 15, 2010, 12:52:22 AM
Quote from: SplinterGU on December 15, 2010, 12:48:36 AM
...no recuerdo 1 solo lenguaje que permita eso...
Ten cuidado con estas palabras Splinty que yo las puse una vez y me saltaron que se podia hacer en un lenguaje que no lo conoce ni su tia.... xD
Vamos si que es conocido pero es mas para Web que programación en si, ya que para mi no son mas que nada interpretes....
dije que no recuerdo ninguno, no dije que no existan.
Quote from: SplinterGU on December 15, 2010, 01:01:21 AM
Quote from: DjSonyk on December 15, 2010, 12:52:22 AM
Quote from: SplinterGU on December 15, 2010, 12:48:36 AM
...no recuerdo 1 solo lenguaje que permita eso...
Ten cuidado con estas palabras Splinty que yo las puse una vez y me saltaron que se podia hacer en un lenguaje que no lo conoce ni su tia.... xD
Vamos si que es conocido pero es mas para Web que programación en si, ya que para mi no son mas que nada interpretes....
dije que no recuerdo ninguno, no dije que no existan.
yo dije lo mismo que no recordaba ..... ¬¬, tampoco hablé de que no existiera...
puede que sea, lua, no recuerdo, pero hacerlo en bennu es una locura...
Quote from: SplinterGU on December 15, 2010, 01:31:43 AM
puede que sea, lua, no recuerdo, pero hacerlo en bennu es una locura...
Digo yo que ando poco lucido estos dias que apenas estoy durmiendo pero vamos...Yo me refiero a la frase no a los arrays,vamos que para nada estoy hablando de los arrays ,que ya me quedo claro cuando le contestastes a drumpi que en bennugd los strings se manejan en forma de objetos ...
Creo que deverias leertelo todo de nuevo,eso si muy despacito....
ok, ya te entendi...
Splinter, he probado la nueva versión y no me ha roto nada en el juego (he mirado especialmente el editor de nombres que hace uso de arrays, strings, chars y conversiones varias), no he probado la estabilidad, ha sido un test muy fugaz pero todo ha ido correctamente.
Quote from: BoMbErLiNk on December 15, 2010, 04:14:18 AM
Splinter, he probado la nueva versión y no me ha roto nada en el juego (he mirado especialmente el editor de nombres que hace uso de arrays, strings, chars y conversiones varias), no he probado la estabilidad, ha sido un test muy fugaz pero todo ha ido correctamente.
muchas gracias bomber... has pasado algunos niveles? con proyectos del tamaño del SoRR, estas pruebas son muy valiosas... gracias...
Es tan complicado implementar eso ? No quiero declarar tantos arrays en memoria y la opcion de asignar posicion a posicion para tanto texto me parece programación de novato ;D
no solo muy complicado, sino que propenso a errores y malas interpretaciones, ya que esto serviria para lenguajes simples donde solo podes asignar variables en lineas separadas, pero en bennugd podes asignar variables dentro de parametros o dentro de un if, y en el caso de un parametro seria muy confuso saber si son parametros separados o multiple asignacion... definitivamente no le veo sentido...
sin embargo, no tenes que copiar 1 a 1... tenes que tener arrays preset, y copiarlos para reiniciar tus vectores.
por ejemplo
global
int array_preset_1[2] = 1, 2, 3;
int array_preset_2[2] = 6, 6, 6;
int array_preset_3[2] = 2, 5, 6;
...
if ( level1 )
mis_valores = array_preset_1;
end
if ( level2 )
mis_valores = array_preset_2;
end
...
Eso que has puesto es lo primero que he dicho, has creado 3 array's en la memoria global, lo que quiero evitar, es mejor poner if's mas laboriosos con mas contenido que hacer eso...
Quote from: FreeYourMind on December 15, 2010, 02:56:48 PM
Eso que has puesto es lo primero que he dicho, has creado 3 array's en la memoria global, lo que quiero evitar, es mejor poner if's mas laboriosos con mas contenido que hacer eso...
no te he dicho que no es lo mismo que pusiste primero...
por otro lado, eso se usa en todos lados, toda aplicacion profesional tiene presets o plantillas de valores que copian a sus areas de trabajo, pero alla tu, has lo que mejor te de.
Lo se, pero cuando son 30, 40 arrays de 5 strings cada, logicamente ahorras algo de memoria si lo haces por if's usando ssolo uno....
no, absolutamente no... no ahorras memoria, ni cpu, por el contrario, consumis mucho mas en ambos puntos.
Pruebas, cuanta memoria ocupa una sentencia if ?
no es solo la sentencia if, son las sentencias adicionales de asignacion, el loop de cada sentencia, etc.
Quote from: SplinterGU on December 14, 2010, 08:13:53 PM
Quote from: Drumpi on December 14, 2010, 06:03:40 PM
Las strings son arrays de char, pero de tamaño indefinido (usan punteros).
no, no y no... lo dije unas 1000 veces... las strings en bennugd (y no me vengas con que no hablabas de bennugd) no son arrays a chars, ni tampoco punteros... las strings en bennugd son objetos que se crean y destruyen en cada operacion, por eso es conveniente usar char[].
No me has entendido: lo que quería decir es que una string es un array
de chars (no arrays
a char), pero que no tiene un tamaño definido. Llámalo objeto o como quieras, pero dentro de ese objeto se manejan punteros (y he supuesto que se usan como explico en el hilo de "punteros como arrays para novatos") pues es lo que se usa para manejar memoria dinámica.
Quote from: Drumpi on December 15, 2010, 07:19:06 PM
Quote from: SplinterGU on December 14, 2010, 08:13:53 PM
Quote from: Drumpi on December 14, 2010, 06:03:40 PM
Las strings son arrays de char, pero de tamaño indefinido (usan punteros).
no, no y no... lo dije unas 1000 veces... las strings en bennugd (y no me vengas con que no hablabas de bennugd) no son arrays a chars, ni tampoco punteros... las strings en bennugd son objetos que se crean y destruyen en cada operacion, por eso es conveniente usar char[].
No me has entendido: lo que quería decir es que una string es un array de chars (no arrays a char), pero que no tiene un tamaño definido. Llámalo objeto o como quieras, pero dentro de ese objeto se manejan punteros (y he supuesto que se usan como explico en el hilo de "punteros como arrays para novatos") pues es lo que se usa para manejar memoria dinámica.
te he entendido, y no, no son punteros, no puedes acceder a una string por medio de un puntero... no es un array de char... por favor, no confundamos a la gente.