this post was submitted on 08 Mar 2024
335 points (100.0% liked)
196
16431 readers
1698 users here now
Be sure to follow the rule before you head out.
Rule: You must post before you leave.
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
There's a syntax for indexing starting from 0, it's
*(&arr+0) to *(&arr+(n-1))
For the rest of us who are manipulating sets of values and not offsets on pointers and aren't delusionally attached to conventions, there's arr[1] to arr[n]
But then arr.length == the last index, and that’s just too convenient :(
Addition is commutative so of course array indexing is and why the hell are you taking the address of a pointer. Also it's not "int pointer foo" but "foo, dereferenced, is an int" that's why it's
int *foo
notint* foo
. I won't die on that mountain fortress because it is unassailable. Never writechar **argv
(butchar *argv[]
) but it's vital to understand why it doesn't make a difference to the compiler. It's what passes as self-documenting code in C land.Also 0-based indexing is older than C. It's older than assembly.
Why do you assume it was a pointer type? There's no types. Why do you assume C either? This is pseudo code to illustrate pointer offsets
Because afterwards you said
arr[n]
. By conventionn
is definitely an integer and if arr is also, say, an integer, you getBecause you didn't write
^(@arr+0)
(Not sure that's even valid though my Pascal is very rusty).Granted. But then it's still Pseudo-C, not Pseudo-Pascal or Pseudo-Whitespace.
It's pseudo-nothing
It conveys a point, which you got, and if you decide to invent a syntax and bicker on it it's just you
Really pointless discussion