Acerca del valor de primera, segunda y tercera clase

Primera clase el valor puede ser

pasado como argumentoregresado de una subrutinaasignado a una variable.

Segunda clase el valor solo se puede pasar como argumento.

Tercera clase incluso el valor no se puede pasar como argumento.

¿Por qué deberían estas cosas definidas así? Según tengo entendido, "se puede pasar como argumento" significa que se puede insertar en la pila de tiempo de ejecución, "se puede asignar a una variable" significa que se puede mover a una ubicación diferente de la memoria; "se puede devolver desde una subrutina" casi tiene el mismo significado de "se puede asignar a una variable" ya que el valor devuelto siempre se coloca en una dirección conocida, por lo que el valor de primera clase es totalmente "móvil" o "dinámico", segunda clase el valor es medio "móvil", y el valor de tercera clase es simplemente "estático", como las etiquetas en C / C ++ que solo se pueden abordar mediante la instrucción goto, y no puede hacer nada con esa dirección excepto "goto". la comprensión tiene algún sentido? ¿O qué significan exactamente estos tres tipos de valores?

Respuestas a la pregunta(4)

Su respuesta a la pregunta