#8 Zitat von DeinOpa: polval ist eine Funktion. Den Wert für n übergibst du beim Funktionsaufruf. Polval ist eine Funktion. Also sie ist vordefiniert in math. h? Soll heißen die macht die ableitungen von alleine? Ergänzung ( 1. Mai 2012) Zitat von kuddlmuddl: Da is so ziemlich alles murks. Was erhoffst du dir von n=n? Und a[n] wird das Programm zum Absturz bringen denn wenn ein Array 6 groß ist darf man nicht a[6] machen sondern nur 0 bis 5. Ich habe es geändert. Danke dir:-) #12 a[0] darf nicht mit in die schleife, da sonst +a[0]*x gerechnet wird und es darf laut horner schema als letztes nur a[0] addiert werden. Also um es mal konkret zu machen, ich soll eine C-funktion schreiben die im allgemeinen das hornerschema beschreibt. das array a soll meine koeffizienten abspeichern, als doublewerte. Die variable n ist mein exponent und mein index von a. Daher ein integerwert, nur ganzzahlige werte. C größe eines arrays in html. Und x ist meine dritte variable. a Index n * x^n.
Würde helfen, auch ein bestimmtes Codebeispiel hinzuzufügen, IMO. Sie können die Größe von Array-Objekten nicht ändern. Sie müssten den Speicher für dynamisch zuweisen array und erweitern Sie es mit realloc. Beispiel: size_t current_size = 0; char **array = malloc((current_size + 1) * sizeof *array); if (array) { array[current_size++] = 'This';}... C größe eines arrays in python. /** * If realloc cannot extend the buffer, it will return NULL and leave * the original buffer intact; however, if we assign NULL back to array, * we lose our handle to the original buffer, causing a memory leak, so * we assign the result to a temporary variable. */ char **tmp = realloc(array, (current_size + 1) * sizeof *array) if (tmp) { array = tmp; array[current_size++] = 'That';} else { // realloc failed to extend the buffer; original buffer // is left intact. } Vorsichtsmaßnahmen: realloc ist ein relativ teurer Aufruf, daher möchten Sie Ihren Puffer (im Allgemeinen) nicht um ein Element nach dem anderen erweitern, wie ich es hier getan habe.
Aber warum machen Sie es nicht auf die C ++ - Weise std::vector s
std::vector
Diese Frage wurde inspiriert durch eine ähnliche Frage: Wie funktioniert delete[] "weiß" die Größe des Operanden-array? Meine Frage ist ein wenig anders: gibt es eine Möglichkeit, bestimmen die Größe eines C++ - Arrays programmgesteuert? Und wenn nicht, warum? Jede Funktion, die ich gesehen habe, dass dauert ebenfalls ein Feld erfordert einen integer-parameter, um ihm die Größe. Aber wie der verlinkte Frage darauf hingewiesen, delete[] müssen wissen, die Größe des Speichers freigegeben werden. Betrachten dieser C++ - code: int * arr = new int [ 256]; printf ( "Size of arr:%d\n", sizeof ( arr)); Diese Drucke " Size of arr: 4 ", die nur die Größe des Zeigers. Es wäre schön, eine Funktion zu haben, die druckt 256, aber ich glaube nicht, dass man existiert in C++. (Nochmals, die Frage ist, warum es nicht existiert. ) Klärung: ich weiß, dass wenn ich deklariert das array auf dem stack statt dem heap (d. C größe eines arras.com. h. " int arr[256]; "), dass die sizeof operator zurückkehren würde, 1024 (array length * sizeof(int)).