Wofür steht (int (*) []) var1?
-
24-10-2019 - |
Frage
Ich habe diesen Beispielcode gefunden und versucht zu googeln was (int (*)[])var1
Könnte stehen, aber ich habe keine nützlichen Ergebnisse erhalten.
#include <unistd.h>
#include <stdlib.h>
int i(int n,int m,int var1[n][m]) {
return var1[0][0];
}
int example() {
int *var1 = malloc(100);
return i(10,10,(int (*)[])var1);
}
Normalerweise arbeite ich mit VLAs in C99, also bin ich es gewohnt:
#include <unistd.h>
#include <stdlib.h>
int i(int n,int m,int var1[n][m]) {
return var1[0][0];
}
int example() {
int var1[10][10];
return i(10,10,var1);
}
Vielen Dank!
Lösung
Es bedeutet "Gießen Sie var1 in Zeiger auf eine Reihe von int int".
Andere Tipps
Es ist ein Typecast für einen Zeiger, der auf eine Reihe von int zeigt.
(int (*)[])
ist ein Zeiger auf eine Reihe von int
s. Äquivalent zu der int[n][m]
Funktionsargument.
Dies ist eine übliche Idiom in C: Erstellen Sie zuerst ein Malloc, um Speicher zu reservieren, und wirft es dann auf den gewünschten Typ.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow