CSE 131
Quiz 3 Review
Semantic Type Checking
Type Equivalence
Structural Equivalence
Name Equivalence
Strict
Loose
Aliases/typedefs
Type Compatibility
Explicit type conversions and casts
Non-converting casts / casts requiring run time conversion (and checks)
Type subversions
Implicit type coercion
Different type rules in C and Java, for example
Generic types
Operator overloading and Copy/Type constructors
Compatible
Assignable
Equivalent
Addressable
Value parameter rules vs. VAR parameter rules
l-values, modifiable l-values, r-values
Type inference
Based on the overall expression (context) vs. immediate operands/operator
Static vs. dynamic type checking
Polymorphism
Declaration vs. definition
Initialization vs. assignment
Basic types
SPARC architecture data size (sizeof()) and alignment restrictions
Enumeration types
Composite types
Records/structs
offsetof( struct_type, struct_member )
sizeof( type|var )
assignment support; comparison?
Bit fields
Variant records/unions
Arrays
Memory layout in C vs. Java (arrays are real objects)
Multidimensional arrays vs. Row-Pointer layout (array of pointers)
Traversal pointer
Storage map equation / address calculation
a[i] ==> *(a + i) - scalar pointer arithmetic
Pointers/References
Scalar arithmetic on pointers
References as pointers or handles
Explicit memory management vs. automatic garbage collection
Interoperabilities and differences between pointers and arrays in C/C++
Pointer Papers outside my office
Right-Left Rule
C/C++ Runtime Environment [Text/Data/BSS/Heap/Stack]
Java Runtime Environment [Method_or_Class Area/Heap/Stack]