and what is a pointer then?
pointer is a "feature" provided by the language where it has no merit to decide if a laguange is low or high imho. from one perspective, "low or high" level was meant to how you interact programmatically with the native machine code. and from one perpective, pointers or arrays or even variables are all the same, they are addressing memory location. when you are assigning a = 2 you are actually manipulating memory space

granted with variables or arrays you cant control of where in the memory location you want to manipulate, do you think you can do that with pointers in protected mode? such as *ptr = whereeverilike ? you may try, there is reason once upon a time the blue screen was called "famous". exception to some hacks maybe, thats i call the deviation from an "ideal" or "theoritical" or "intended" implementation of the system. being able to hack from C doesnt necessarily means its low enough level. (2cnts from a person who lived the life)
and with pointers in C, you dont take it for granted, you need to call/pass system/OS's memory management or API to get the address. remember "free", "malloc", "new"? what do you think are they?