Фигурные скобки, передача массива в функцию, возвращение массива
Я начинающий программист, не могу разобраться со значением {} фигурных скобок

Сама программа работает, но у преподавателя есть вопрос "Что означают фигурные скобки в данном контексте? Именно синтаксис и какую функцию несут?" Я не знаю что ответить, так как я знаю, что так многие пишут, но пояснить за работу не могу. Если что вся программа представлена ниже
Ответы (2 шт):
По умолчанию обычные массивы локальной области видимости (например, объявленные внутри функции) остаются неинициализированными. Это означает, что ни один из его элементов не установлен на какое-либо конкретное значение; их содержимое не определено в точке, в которой объявлен массив.
Однако элементы массива при объявлении могут быть явно инициализированы до конкретных значений, заключив эти начальные значения в фигурные скобки {}. Например:
int foo [5] = { 16, 2, 77, 40, 12071 };
Соответственно конструкция
vector<int> foo={4};
инициализирует вектор из одного элемента, значение которого 4.
Вот пример использования при передаче параметра в функцию.
#include <iostream>
#include <vector>
using namespace std;
void func(int s, vector<int> vec){
for (int i=0;i<vec.size();i++)
cout << vec[i] << endl;
}
int main(){
int s=3;
func(s,{s});
s=4;
func(s,{s,s});
return 0;
}
у преподавателя есть вопрос "Что означают фигурные скобки в данном контексте? Именно синтаксис и какую функцию несут?"
Если ответ "создают вектор из одного элемента" его не устроил, то это выглядит как "я не рассказывал про это на лекциях, поэтому не пишите так".
какую функцию несут
Создают вектор из одного элемента s. Для этого вызывается конструктор std::vector, с параметром std::initializer_list (9-ый конструктор здесь).
синтаксис
Эти фигурные скобки в грамматике называются braced-init-list, почитать про их грамматику можно тут.

