Ich habe diesen Code, der die kleinste Ganzzahl in einem Array finden soll. Ich lerne, wie man Zeiger in C benutzt, und mein Code wird nicht kompilieren, aber ich weiß nicht warum. Anstatt nur die Antwort, würde ich gerne wissen, warum ich falsch mache oder wie ist mein Denkprozess falsch.Wie Zeiger richtig in C verwenden?
Ich dachte, dass *p_min
den Wert innerhalb der Adresse zurückgeben wird.
Die Fehler, die ich erhalten:
error: invalid type argument of ‘unary *’ (have ‘int’)
Warning: return makes pointer from integer without a cast
p außerhalb der Funktion als int * p erklärt wird;
Code:
int *find_smallest(int a[], int N)
{
int *p_min;
for (p = &a[0]; p < &a[N]; p++)
{
if (*p[1] < *p[0]) {
p_min = &p[1];
return *p_min;
} else {
p_min = &p[0];
return *p_min;
}
}
}
Sie sind wieder ein 'int' aber Ihre Funktion will einen Zeiger auf' int' zurückzukehren, auch, was 'P'? –
Sorry ist nur das ist ein längerer Code, aber p ist als int * p deklariert; –
Sie sollten Ihren Code richtig formatieren (// prohackr112.tk/pcf). Die richtige Formatierung zieht Leute an und ermutigt sie, Ihnen zu helfen. –