That means "back-to-school" ![]()
Yes
sizeof(x) gives the size in bytes of a variable with the name 'x'. So sizeof(trigPins) gives 3.
In the first example, sizeof(pinIndex) will give 100 (100 times 1 byte) but sizeof(reading) will give 200 (100 times 2 bytes).
sizeof(x[0]) will give the size of the first element of an array with the name 'x'. For an uint16_t that will be 2. Divide the size of the 'reading' array (200) by the size of the first element of that array (2) and you get the number of elements in the array.
It's may be a bit overkill to use this division for uint8_t arrays (because dividing by 1 is not very useful) but it's kind-of automatic for me to use it.
Note that sizeof(x) is evaluated at compile time, not when the code is running. So for (uint8_t cnt = 0; cnt < sizeof(trigPins) / sizeof(trigPins[0]); cnt++) becomes for (uint8_t cnt = 0; cnt < 3; cnt++) before your code will actually be compiled.