Re:Fixing C
by mfukar on Tuesday April 12, 2016 @06:51AM
(#11478459)
Now, at one point, you stopped talking about arrays and started talking about pointers.
[ Parent
| on HN ]
That's because C tosses out all of that array state information at the drop of a hat once you start passing them around to functions.
Worse, it's an easy way to get burned on the sizeof() function, especially if you at some point refactor the code and put that chunk in a function separate from the original declaration.
This is why C programmers get gunshy about relying on that information and instead just treat strings like pointers all of the time.
> This is why C programmers get gunshy about relying on that information and instead just treat strings like pointers all of the time.
Good programmers do nothing of the sort.
Exactly. When array is passed into function, you lose length information and array construct is reduced to pointer. Array syntax is just synthetic sugar for dereferencing pointer with offset.
This discussion won't get very far if all you think arrays are is syntactic sugar. The array type is useful - think in terms of a static analyser if it helps - in different ways than pointers.
"array syntax" != "arrays". He means things like a[i]. Arrays are only really arrays in their local scope, if you pass them to functions they suddenly are pointers (but for some insane reason, C compilers let you specify "the size of the array in a function argument" which doesn't actually compile to any code).