Функция function
всегда возвращает одно и то же значение, а именно указатель, указывающий на начало статического массива B
.
В первом фрагменте кода вы вызываете funtion
три раза как частьзвонка на printf
.При вызове функции каждый из ее параметров должен быть оценен перед вызовом функции.Это означает, что function
вызывается 3 раза до вызова printf
, поэтому B
содержит только самое последнее сохраненное значение.Это означает, что вы печатаете одну и ту же вещь 3 раза.
Кроме того, порядок, в котором оцениваются аргументы функции, не определен, поэтому вы не знаете, какой вызов function
будет последним.Значение, напечатанное три раза, может быть равно 1, 2 или 3.
Во втором фрагменте, поскольку вы вызываете function
только один раз при каждом вызове printf
, нет никакой двусмысленности относительно того, что будет напечатано.