diff --git a/pystencils/data_types.py b/pystencils/data_types.py
index 7bdc9d340664fa20178ec941cc9e5305d99fd02c..93ef5c1c798df3b0316fdd4232462e13a9415538 100644
--- a/pystencils/data_types.py
+++ b/pystencils/data_types.py
@@ -14,6 +14,33 @@ from pystencils.utils import all_equal
 from sympy.logic.boolalg import Boolean
 
 
+# noinspection PyPep8Naming
+class address_of(sp.Function):
+    is_Atom = True
+
+    def __new__(cls, arg):
+        obj = sp.Function.__new__(cls, arg)
+        return obj
+
+    @property
+    def canonical(self):
+        if hasattr(self.args[0], 'canonical'):
+            return self.args[0].canonical
+        else:
+            raise NotImplementedError()
+
+    @property
+    def is_commutative(self):
+        return self.args[0].is_commutative
+
+    @property
+    def dtype(self):
+        if hasattr(self.args[0], 'dtype'):
+            return PointerType(self.args[0].dtype, restrict=True)
+        else:
+            return PointerType('void', restrict=True)
+
+
 # noinspection PyPep8Naming
 class cast_func(sp.Function):
     is_Atom = True