|
In computer science, a value may be a number, literal string, array and anything that can be treated as if it were a number. In other words, label, subprogram, datatype, inheritance and control flow are not values in general. The exact definition varies across programming languages. Variables and subprogram calling sites are mostly treated as values. The distinction from object is subtle but one can say that objects include references while values do not. References, however, are commonly expressed as values too, notably a pointer in C programming language. You may conclude that In C, therefore there is no difference between objects and values. The use of a term value is useful in clarifying the exact meaning of assignments, copying, and comparison of objects. In the value model, for instance, objects itself are copied instead of references to it, they are treated as if they were numbers.
L-value and r-value Some languages use the idea of l-value and r-value. L-values are values that have addresses, meaning they are variables or dereferenced references to certain place. R-value is either l-value or non-l-value — a term only used to distinguish from l-value. In C, the term l-value originally meant something that could be assigned (coming from left-value, indicating it was on the left side of the = operator), but since 'const' was added to the language, this now is termed a 'modifiable l-value'. An lvalue is an expression that designates (refers to) an object. A non-modifiable lvalue is addressable, but not assignable. A modifiable lvalue allows the designated object to be changed as well as examined. An rvalue is any expression that isn't an lvalue, it refers to a data value that is stored at some address in memory.
See also - Attribute-Type-Value Object Language
External links - Value Object (http://c2.com/cgi/wiki?ValueObject)
- Transfer Object Pattern (http://java.sun.com/blueprints/patterns/TransferObject.html)
|