niƱos mental memoria mejorar house harvard data concentracion como caso cards capacidad big atencion c scope heap local

mental - como mejorar la concentracion y memoria



Alcance de las variables C (4)

El "Hello" es un literal de cadena y existirá durante la vigencia del programa. Para citar las secciones relevantes del estándar C99:

  • 6.4.5 Literales de cadenas

... La secuencia de caracteres multibyte se usa para inicializar una matriz de duración de almacenamiento estático y longitud suficiente para contener la secuencia ...

  • 6.2.4 Duraciones de almacenamiento de los objetos

Un objeto cuyo identificador se declara con un enlace externo o interno, o con el especificador de clase de almacenamiento estático tiene una duración de almacenamiento estática . Su duración es la ejecución completa del programa y su valor almacenado se inicializa solo una vez, antes del inicio del programa.

El valor de retorno de la función debe ser const char* ya que un intento de modificar una cadena literal es un comportamiento indefinido.

Posible duplicado:
¿Devolver una dirección literal de una función segura y portátil?
"Tiempo de vida" de cadena literal en C

Hola estoy algo confundido

char *func() { return "Hello"; }

Aquí "Hola" es secuencia / matriz de caracteres. Es una variable local y debe desaparecer tan pronto como la función regrese. Entonces, ¿por qué podemos obtener el valor correcto?


Es constante y tiene una dirección constante en la memoria.


La función destruye los valores solo después de devolver el control.

Entonces, en el momento en que se encuentra la declaración de retorno, se coloca el "Hola" para devolver el valor y luego la función destruye el alcance;