Jeśli coś takiego napisać:Jaki jest cel "{}" w "nowy int [5] {};"?
int *arr = new int[5];
W tym przypadku system dynamicznie przydziela miejsca dla 5 elementów typu int
i zwraca wskaźnik do pierwszego elementu sekwencji.
Ale raz widziałem następujący kod:
int *arr = new int[5]{};
Więc, co ma oznaczać {}
po new
operatora? Jaki jest cel {}
w tym kodzie?
Mam zainicjowany tablicę z własnej wartości, tak:
#include <iostream>
int main()
{
int* a = new int[5]{1};
for(int i = 0; i < 5; i++)
std::cout<< a[i]<<' ';
delete[] a;
}
wyjściowa:
1 0 0 0 0
tylko pierwszy element print 1
. Czemu?
Zalecam, aby nie spieszyć się z czytaniem [tego "nowego" odniesienia] (http://en.cppreference.com/w/cpp/language/new). W tabeli opisującej składnię należy zwrócić uwagę na część * initializer *. Następnie przejdź do sekcji o [Budowa] (http://en.cppreference.com/w/cpp/language/new#Construction), aby dowiedzieć się więcej na ten temat. –
Ta składnia jest używana od wersji C++ 11. Pozwala na zainicjowanie tablicy z wartościami podanymi w nawiasach klamrowych lub w tym przypadku zerami. –
Użyj std :: vector! –