int* arr1 = {}; //ok: arr1 == NULL
int* arr2 = {1,2,3};//error: scalar object requires one element in initializer
Ich erwartete die Initialisierung von arr1
, um den gleichen Fehler zu verursachen, aber es tut es nicht. Warum das?Warum ist int * arr = {}; legal?
Edited:
Thank @krzaq für die Antwort. Ich war verwirrt mit dem, worüber du geredet hast.
So sind die folgenden Aussagen sind alle legal:
int* arr1 = {};
int arr2[] = {1,2,3};
int* arr3 = {arr2};
'int * arr3 = {arr2}' initialisiert nur den Zeiger 'arr3' an die Adresse des ersten Elements von' arr2'. Es macht es nicht zu einem Array. –
Ja; Was ich gemacht habe, macht nur 'arr2' und 'arr3' die gleiche Adresse. –