Cadena de caracteres por referencia [C]

Iniciado por n-utz, 18 Noviembre 2016, 05:20 AM

0 Miembros y 1 Visitante están viendo este tema.

n-utz

Buenas gente, miren tengo una duda..

En caso de tener una cadena de caracteres "estática", por ejemplo en mi caso:

lista[n], siendo n un entero pedido antes.

Y quiero pasar dicha variable a una función para que la modifique y después retorne al main para escribirlo en un txt.

Se puede trabajarlo así? O tengo que trabajarlo con malloc?

Mi idea es escribir por ejemplo un nombre, después que retorne al main, lo limpia a 0, y que vuelva a mandarle la misma cadena pero toda llena de 0 para que la complete devuelta.

ivancea96

#1
A partir del estándar C99 se puede hacer lo que dices. En C++, también lo podrás hacer así.
Sin embargo, mi opinión es que yo utilizaría malloc por pura compatibilidad (https://en.wikipedia.org/wiki/C11_(C_standard_revision)#Optional_features)

Ahora bien, hagas como lo hagas, se lo podrás pasar a una función de la misma manera (como un char*, por ejemplo)

geeke

Cita de: ivancea96 en 18 Noviembre 2016, 16:11 PM
A partir del estándar C99 se puede hacer lo que dices. En C++, también lo podrás hacer así.

Cabe aclarar que los array de longitud variable no forman parte del estándar de C++ pero algunos compiladores lo permiten como una extensión como por ejemplo g++.

ivancea96


n-utz

Cita de: ivancea96 en 18 Noviembre 2016, 16:11 PM
A partir del estándar C99 se puede hacer lo que dices. En C++, también lo podrás hacer así.
Sin embargo, mi opinión es que yo utilizaría malloc por pura compatibilidad (https://en.wikipedia.org/wiki/C11_(C_standard_revision)#Optional_features)

Ahora bien, hagas como lo hagas, se lo podrás pasar a una función de la misma manera (como un char*, por ejemplo)

Perfecto, usaré malloc, el tema es que siempre voy a utilizar las mismas posiciones cambiandole continuamente sus valores. Habrá inconvenientes? Me conviene usar free, antes de acomodar nuevos valores?

ivancea96

Si elt amaño del array no va a cambiar desde que haces malloc, no necesitas hacer free. Cuantas menos operaciones hagas, mejor.
Si solo cambiarás sus valores, sé libre de ello sin problema.
Eso sí, al final, cuando hayas acabado, sí que liberas memoria con free, claro está.

n-utz

Cita de: ivancea96 en 18 Noviembre 2016, 18:22 PM
Si elt amaño del array no va a cambiar desde que haces malloc, no necesitas hacer free. Cuantas menos operaciones hagas, mejor.
Si solo cambiarás sus valores, sé libre de ello sin problema.
Eso sí, al final, cuando hayas acabado, sí que liberas memoria con free, claro está.

Muchas gracias!!