Summe von zwei arrays
Die übung sagt "Machen Sie eine Funktion mit Parameter zwei int-arrays und k, das ist Ihre Größe. Die Funktion zurückgeben soll ein array (Größe k), wo jedes element ist die Summe der beiden arrays an der gleichen position. Das ist, was ich schrieb, aber es stürzt ab. Mache ich es mit Zeigern?
#include <stdio.h>
#include <stdlib.h>
void sumarray(int k,int A[k],int B[k]){
int sum[k],i;
for(i=0;i<k;i++){
sum[i]=A[i]+B[i];
printf("sum[%d]=%d\n",i,sum[i]);}
}
main(){
int i,g,a[g],b[g];
printf("Give size of both arrays: ");
scanf("%d",&g);
for(i=0;i<g;i++){
a[i]=rand();
b[i]=rand();
}
sumarray(g,a,b);
system("pause");
}
Beispiel: Wenn ich habe A={1,2,3,4} und B={4,3,2,1} das Programm return C={5,5,5,5).
Wie weit kann man, bevor es abstürzt?
Was ist der crash? Was ist die Fehlermeldung? mit welcher input?
Es ist nicht einmal starten. Ich bekomme einen schwarzen Bildschirm und ich bekomme eine Fehlermeldung und das Programm beendet.
Was ist der crash? Was ist die Fehlermeldung? mit welcher input?
a
und b
werden sollte, Zeiger:int *a, *b
, dann initialisieren des arrays mit malloc
oder calloc
.Es ist nicht einmal starten. Ich bekomme einen schwarzen Bildschirm und ich bekomme eine Fehlermeldung und das Programm beendet.
InformationsquelleAutor captain | 2011-04-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
:
Ursachen undefined Verhalten. Der Wert von
g
ist nicht definiert, nach der Initialisierung, also die Länge dera
undb
undefiniert.Möchten Sie wahrscheinlich so etwas wie:
InformationsquelleAutor Oliver Charlesworth
Seine unmöglich, zuerst
a[g]
wenn dynamisch immerg
.Ihre ersten Zeilen in der main werden sollte:
b
ist kein Zeiger.InformationsquelleAutor The GiG
k
ist eine variable, aber die Größe des Arrays sollte eine Konstante.Aber die Funktion, die Sie schrieb zurück
void
was offensichtlich falsch ist.Ja.
InformationsquelleAutor Mahesh
Einzige Problem ist, dass Sie versucht haben, zu erklären, dynamisch dimensionierte arrays auf dem stack (z.B.
a[g]
). Sie müssen erklären, Zeiger für jedes array und dann dynamisch reservieren Sie Ihr array mit variabler Größe, sobald Sie Sie gelesen haben, die im Wertg
.In C99, wäre es ok deklarieren Sie die variable length arrays nach
g
gelesen wurde. Aber für general-purpose-C, dann ja, das ist, was Sie tun sollten.InformationsquelleAutor Eric Conner
ändern Sie die Funktion summary Signatur (die definition als Teil der Deklaration) zu diesem und probieren Sie es aus:
void sumarray(int k,int* A,int* B){
InformationsquelleAutor Priyank