C# can use pointers in “unsafe” context to a certain extent as well. What really separates the languages is C++'s (IMHO a bit antiquated) use of includes and templates. Unreal Engine code makes much use of these features (yes, and also of pointers), so learning C++ is still a bit different from learning to read and write Unreal Engine native code.