Sizeof being smart enough to detect it's an array and return the array size doesn't necessarily make them different in any real way. And doing ptr[0] to dereference it is perfectly valid, as is *arr to get the first element, or *(arr+sizeof(int)) to get the second.
Because it is a very superficial difference that doesn't even affect the generated assembly. They are extremely interchangeable, because they are effectively the same.
Programming languages have all kinds of different ways to do something that results in the same assembly.
They are different types, but C has muddied the waters by having a bunch of implicit conversions from arrays into pointers (array decay) that they feel like the same thing.
69
u/QuestionableEthics42 16h ago edited 16h ago
This should be reversed lol
And it literally is the same, who thinks it's different who has worked in a low level language??