Используется си-подобное понятие массива как указатель на первый элемент. И благодаря арифметике указателей код вида pQueueFamilyProperties[i] вернет указатель на i элемент. Произойдет что-то типа pQueueFamilyProperties + i*sizeof(VkQueueFamilyProperties).
В итоге сначала надо спросить кол-во элементов
uint32_t queueFamilyPropertiesCount = 0;
vkGetPhysicalDeviceQueueFamilyProperties(
physicalDevice, &queueFamilyPropertiesCount, 0);
Выделить память для этих элементов и получить их
//Если пишите на C
VkQueueFamilyProperties* const queueFamilyProperties =
(VkQueueFamilyProperties*)malloc(
sizeof(VkQueueFamilyProperties) * queueFamilyPropertiesCount);
//Если пишите на C++
VkQueueFamilyProperties* const queueFamilyProperties =
new VkQueueFamilyProperties[queueFamilyPropertiesCount];
vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice,
&queueFamilyPropertiesCount, queueFamilyProperties);
P.S. Я не эксперт в Vulcan API и не разу его не использовал но по идее должно работать.