Функция testFunction
, как вы ее объявляете, void testFunction(struct mytest test)
, может вызываться с помощью:
testFunction((struct mytest) {1,2});
При этом используется составной литерал , который имеет вид:
(type) { initializers... }
Используемый таким образом, он создает временный объект и передает его значение функции.
Для функции, которая принимает указатель на структуру, такую как void testFunction(struct test *mytest)
, вы можетепередать адрес составного литерала с помощью:
testFunction(& (struct mytest) {1,2});
или:
testFunction((struct mytest []) {1,2});
Время жизни составного литерала внутри функции заканчивается, когда исполняется связанный с ним блок (самый внутренний * 1020)* что приложить это) заканчивается.Он имеет автоматическую продолжительность хранения.
Составной литерал вне любой функции имеет статическую продолжительность хранения;он существует на протяжении всей жизни программы.