Нет, вы не можете, если вы хотите, чтобы ваш код был переносимым C:
% gcc -pedantic-errors -c init.c
init.c: In function ‘function’:
init.c:2:19: error: ISO C forbids empty initializer braces [-Wpedantic]
char s[50][50]={{}};
^
Это расширение GCC. Однако вы можете добавить одинарный ноль в фигурных скобках:
char s[50][50] = {{0}};
или даже в пределах одного набора скобок:
char s[50][50] = {0};
он найдет первый скалярный элемент и инициализирует его заданным значением, а остальные элементы, не инициализированные явно, будут инициализированы, как если бы они имели нулевой инициализатор. (Примечание: вы можете использовать, скажем, 42 для одного элемента, а остальные из них будут по-прежнему инициализированы в ноль).
Или, поскольку это массивы char
, вы можете использовать строку в фигурных скобках:
char s[50][50] = {""};
Это инициализирует s[0]
пустой строкой.
Пустой инициализатор ({ }
) GCC необходим для другого расширения - инициализация элементов гибкого массива нулевой длины. Он не существует просто для того, чтобы быть общим сокращением.
Стандартный C не поддерживает инициализацию гибких элементов массива и не поддерживает массивы нулевой длины.