| **Navigation:**  [[introduction.htm|Language Reference]] > 13 - Built-in Functions > ====== ADDRESS (return memory address) ====== | [[add add an entry .htm|{{btn_prev_n.gif|Previous page}}]][[introduction.htm|{{btn_home_n.gif|Return to chapter overview}}]][[age return age from base date .htm|{{btn_next_n.gif|Next page}}]] | | || {{newc7.jpg|NewC7.jpg}} **ADDRESS(**| //variable// | **)** {{blk2blue.jpg|blk2blue.jpg}} | **ADDRESS** | Returns memory address of a variable. | | //variable// | The label of a data item or PROCEDURE. | The **ADDRESS** procedure returns the address of the specified data item or PROCEDURE. The ADDRESS procedure allows you to pass the address of a //variable// or //procedure// to external libraries written in other languages, or to reference assign the address to a reference variable. | **Return Data Type:** | LONG | **Example:** MAP ClarionProc !A Clarion language procedure MODULE('External.Obj') !An external library ExternVarProc(LONG) !C procedure receiving variable address ExternProc(LONG) !C procedure receiving procedure address END END Var1 CSTRING(10) !Define a null-terminated string CODE ExternVarProc(ADDRESS(Var1)) !Pass address of Var1 to external procedure ExternProc(ADDRESS(ClarionProc)) !Pass address of ClarionProc ClarionProc PROCEDURE !A Clarion language procedure CODE RETURN **See Also:** [[peek read memory address .htm|PEEK]] [[poke write to memory address .htm|POKE]] [[reference assignments.htm|Reference Assignment Statements]] [[instance_return_variable_s_thread_instance_address_1.htm|INSTANCE]]