Da Sie nicht die Größe der inneren Dimension für st
angeben, wird der Compiler nicht weiß, wie groß es sein muss; daher ist der Typ unvollständig, und Sie es nie vor dem malloc
Anruf abzuschließen.
Da es sieht aus wie Ihre Absicht st
dynamisch zuzuweisen, mit Oli Rat gehen und erklären ihn als Zeiger auf ein 8192-Element-Array von char
:
static char (*st)[8192];
und schreiben Sie Ihre malloc
Aussage
st = malloc(sizeof *st * (tab_size+1));
sizeof *st
== == sizeof (char [8192])
8192. Diese Form ist etwas sauberer und leichter zu lesen. Beachten Sie auch, dass Sie in C das Ergebnis malloc
nicht umwandeln müssen (es sei denn, Sie verwenden eine Implementierung vor C89, in diesem Fall tut es mir leid), und von dieser Vorgehensweise wird abgeraten. jeweils
Dadurch wird ausreichend Platz zuzuteilen tab_size + 1
Arrays von 8192 Zeichen zu halten.
Es ist nur im Rahmen einer Erklärung Funktionsparameter, dass T a[]
a
als Zeiger auf T
erklärt.
Was versuchen Sie zu tun? – cnicutar
Was ist falsch ist, dass 'st' ist kein' char ** '. Außerdem sollten Sie das Ergebnis von "malloc" nicht darstellen. –
als eine Anmerkung gibt es keinen Grund, den Rückgabewert von 'malloc' in c zu werfen, und kann tatsächlich Probleme verursachen, da die' void * 'automatisch gefördert wird. – twain249