Ich möchte zuerst eine int*
mit der Größe 10 erstellen und eine add()
-Funktion schreiben, um Elemente hinzuzufügen. Wenn die Anzahl der Elemente größer als 10 ist, verwendet die Funktion realloc()
, um die Größe des int*
zu ändern. Allerdings habe ich die Fehlermeldung erhalten. Wie kann ich das verbessern?Probleme bei der Verwendung von realloc() in einer Funktion zum Ändern der Größe des int-Zeigers
Hier ist, was ich getan habe:
int main()
{
int size = 10;
int* a;
a = (int*)malloc(size*sizeof(int*));
int i;
double start, stop;
start = clock();
for (i = 0; i < 100000; i++){
add(&a, i, size, i);
}
stop = clock();
printf("Adding arry by one: %10.2f\n", stop - start);
return 0;
}
void add(int *a, int element, int size, int index)
{
if (index < size)
{
a[index] = element;
}
else if (index >= size)
{
a = realloc(a, sizeof(int*)*(index + 1));
a[index] = element;
}
}
'void add (int * a,' getan werden - > 'void add (int ** a,', '* a = realloc (* a, sizeof (int) * (index + 1));', (brauchen Update-Größe?) – BLUEPIXY
@BLUEPIXY Obwohl ungewöhnlich, die 'realloc 'Wird auf' index' gemacht (was aufsteigend gemacht wird) und nicht 'size' (was behoben ist), also ist es" okay "[wenn nicht optimal] –
Sie können kein' int * 'mit einer Größe von 10 machen Sie können jedoch einen "int *" - Punkt auf einen Speicherblock mit einer Größe von 10 Ints setzen. – immibis