It is an initialization; because, setup() function gets executed only once.
Call it what you want, but you were the one asking for details about the standard, and the standard does not call that initialization.
The structs Input1 and Input2 are global variables in your example, and they have static storage duration. If no initializer is provided, it will be zero-initialized before execution of main.
All non-local variables with static storage duration are initialized as part of program startup, before the execution of the main function begins (unless deferred, see below). All non-local variables with thread-local storage duration are initialized as part of thread launch, sequenced-before the execution of the thread function begins. For both of these classes of variables, initialization occurs in two distinct stages:
- If permitted, Constant initialization takes place first (see Constant initialization for the list of those situations). In practice, constant initialization is usually performed at compile time, and pre-calculated object representations are stored as part of the program image. If the compiler doesn't do that, it still has to guarantee that this initialization happens before any dynamic initialization.
- For all other non-local static and thread-local variables, Zero initialization takes place. In practice, variables that are going to be zero-initialized are placed in the .bss segment of the program image, which occupies no space on disk, and is zeroed out by the OS when loading the program.
What you're doing in your setup function is assigning new values to the members. This is strictly speaking not initialization.
That being said, while discussing code informally, you will definitely also catch me referring to it as "initialization".