this post was submitted on 13 May 2025
7 points (88.9% liked)
C++
2002 readers
1 users here now
The center for all discussion and news regarding C++.
Rules
- Respect instance rules.
- Don't be a jerk.
- Please keep all posts related to C++.
founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
what kind of psychopath even came up with
int a[ROWS][COLS] = { 0, 1, 2, 3, 4, 5, 6, 7 };
it's even obviously caught by -Wall (-Wmissing-braces) for both clang and gcc
(oh, actually, g++ fails to recognize it even though gcc and clang do recognize it)
sometimes the latter part is also caught by -fsanitize=undefined, though that goes away if you wrap the array access like so:
printf("%d\n", ((int*)a[0])[i]);
(which I'm unsure if that's still undefined behavior, not that it's any more sane even if it isn't)I came from C, but sadly haven't needed using 2 dimensional arrays enough to be able to say something useful.
I tend to use
std::array
andstd::vector
anyway.But definitely no linear initialisation. It's already too hard to remember which pointers the first
[]
vs second[]
refer to.