Hola, el tema es gruvbox y la fuente es Cascadia Code. En el punto 2 no sé si te refieres a el valor de una variable de tipo char como tal, o a un array. Recuerda que las variables normales sí pueden cambiar su valor en tiempo de ejecución, en un array tambíen se pueden cambiar los valores, esto accediendo a la posición de cada elemento. El tema de memoria dinámica radica en crear o cambiar el tamaño de un array en tiempo de ejecución.
En C, para declarar una variable "tipo String", lo puedes hacer de la siguiente manera: char* myString = "Hola mundo"'; Después si quieres cambiarle el valor lo puedes hacer. Pero usando memoria dinámica es un poco distinto, ya que una vez que se reserva el espacio de memoria, este te devuelve un puntero al primer espacio del bloque de memoria reservado. Con el ejemplo que me diste, se pierde esa referencia al bloque de memoria reservado, y se toma como si fuera un string literal (como si lo hubiese declarado como en el ejemplo que te pongo). En resumen, sí, si puedes cambiar el valor de una cadena en C en tiempo de ejecución, ya sea declarándola con el ejemplo que te puse y después cambiando su valor, o utilizando memoria dinámica y la función malloc, pero para hacer la asignación a esa variable, tendrías que usar la función strcpy, además de actualizar el número de elementos reservados para la nueva cadena, en el caso de que sea de mayor longitud claro, o reservar más espacio de memoria en otro puntero.
Hola! Tengo una pregunta, para la función realloc, podria reducir el tamaño del arreglo? Y que pasaría con él? Qué elementos serian eliminados o como funciona? El video es genial, muy muy claro
Hola, sí, si puedes reducir el tamaño del array. Si tienes un array de 10 elementos, y quieres reducirlo a 5 elementos solamente, los primeros 5 elementos se van a mantener (de la posición 0 a la pisición 4), los demás se "eliminan" (en realidad solo se libera ese espacio de memoria).