Sunday, December 12, 2010

pointer is NOT an address (with exceptions

Some people say "A pointer is(?) an address". Misleading! I'd say "pointers can sometimes be used as addresses."

When people talk about a pointer, they mean either a pointer-variable or an address.

An address of the white-house is a stable, immutable text you can write on paper. But a pointer-var can be reseated, so it's more like a "variable holding an address". (A non-reseatable pointer is pretty much an address. Notable examples include the "this" pointer and the vptr, both hidden fields. Update -- now i think both can be reseated -- in ctor and in multiple-inheritance.)

  int myInt = 3;

Look at the above (simpler) illustration. The variable myInt is NOT the same thing as the value "3". myInt is both a variable and an object (see post on Mutable,initialize etc), has an address and occupies 32 bits and can change its content. Likewise, a pointer var occupies 32 bits of memory and can change Content.

Note nonref variables like myInt is permanently seated at a (virtual) address. It gets allocated 32bits once and for all, and never re-binds to another object (same in java/c/c#). Similar to reference variables. However, python simple myInt variable behaves differently. See other posts.

-- I don't think there's another c++ construct that is as monolithic as address-of-a-house --
* qq( &myObject ) is the closest thing -- It's an address + type information. Whoever using qq( &myObject ) need the address and need to know its type.

** qq( &myObject ) is an address + type and is subject to variable scope control. You can get this address only if you are in its scope. Compiler controls scope(?).

* A const pointer is also like an address-of-a-house.

* A reference doesn't feel like an address. Granted, a reference is permanently seated to an address, but when you read the reference you don't see that target address -- You must take the address of the reference.

No comments:

Total Pageviews

my favorite topics (labels)

_fuxi (302) _misLabel (13) _orig? (3) _rm (2) _vague (2) clarified (58) cpp (39) cpp_const (22) cpp_real (76) cpp/java/c# (101) cppBig4 (54) cppSmartPtr (35) cppSTL (33) cppSTL_itr (27) cppSTL_real (26) cppTemplate (28) creditMkt (14) db (65) db_sybase (43) deepUnder (31) dotnet (20) ECN (27) econ/bank` (36) fin/sys_misc (43) finGreek (34) finReal (45) finRisk (30) finTechDesign (46) finTechMisc (32) finVol (66) FixedIncom (28) fMath (7) fMathOption (33) fMathStoch (67) forex (39) gr8IV_Q (46) GTD_skill (15) GUI_event (30) inMemDB (42) intuit_math (41) intuitFinance (57) javaMisc (68) javaServerSide (13) lambda/delegate (22) marketData (28) math (10) mathStat (55) memIssue (8) memMgmt (66) metaProgram` (6) OO_Design (84) original_content (749) polymorphic/vptr (40) productive (21) ptr/ref (48) py (28) reflect (8) script`/unix (82) socket/stream (39) subquery/join (30) subvert (13) swing/wpf (9) sysProgram` (16) thread (164) thread_CAS (15) thread_cpp (28) Thread* (22) timeSaver (80) transactional (23) tune (24) tuneDB (40) tuneLatency (30) z_ajax (9) z_algoDataStruct (41) z_arch (26) z_arch_job (27) z_automateTest (17) z_autoTrad` (19) z_bestPractice (39) z_bold (83) z_bondMath (35) z_book (18) z_boost (19) z_byRef^Val (32) z_c#GUI (43) z_c#misc (80) z_cast/convert (28) z_container (67) z_cStr/arr (39) z_Favorite* (8) z_FIX (15) z_forex (48) z_fwd_Deal (18) z_gz=job (33) z_gzBig20 (13) z_gzMgr (13) z_gzPain (20) z_gzThreat (19) z_hib (19) z_IDE (52) z_ikm (5) z_IR_misc (36) z_IRS (26) z_javaWeb (28) z_jdbc (10) z_jobFinTech (46) z_jobHunt (20) z_jobRealXp (10) z_jobStrength (15) z_jobUS^asia (27) z_letter (42) z_linq (10) z_memberHid` (11) z_MOM (54) z_nestedClass (5) z_oq (24) z_PCP (12) z_pearl (1) z_php (20) z_prodSupport (7) z_py (31) z_quant (14) z_regex (8) z_rv (38) z_skillist (48) z_slic`Problem (6) z_SOA (14) z_spring (25) z_src_code (8) z_swingMisc (50) z_swingTable (26) z_unpublish (2) z_VBA/Excel (8) z_windoz (17) z_wpfCommand (9)

About Me

New York (Time Square), NY, United States
http://www.linkedin.com/in/tanbin