Thoughts
Brackets tell you it's capable of storing multiple items. To know how many items there are, look inside the brackets:
[N] - an array, there are N items (comptime known, the number of items is a part of the type)
[_] - an array, the compiler will infer the number of items from an array literal
[] - a slice, there are a run-time known number of items (stored as a pointer and a length)
[*] - there are an unknown number of items
[*c] - there are an unknown number of items or maybe this isn't even a multi-item pointer, it's impossible to tell because this is used for Zig that's auto-generated from c code
And then you can add * before any of these to represent a pointer to them of course, and don't get me started on sentinel termination.