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!

War es hilfreich?

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 ints. Ä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
scroll top