was macht "new int[A][B]"?
-
Beitrag http://www.c-plusplus.net/forum/290127 enthält eine Zeile die ich mir absolut nicht erklären kann.
Wieso kompiliert das hier? Und was ist die Semnatik?
int main() { int (*a)[3] = new int[8][3]; }vielen Dank im voraus.
-
int main(){ typedef int dreiInts[3]; dreiInts* a = new dreiInts[8]; }
-
volkard schrieb:
int main(){ typedef int dreiInts[3]; dreiInts* a = new dreiInts[8]; }Danke. Dann stellt sich gleich die nächste Frage: Wie deklariert man ein Array von Funktionszeigern?
-
// typedef int(*MyFP)(int, int); // MyFP fp; // MyFP *fparray; // fp = eine funktion hier; // fparray = new MyFP[10]; // fparray[i] = eine funktion hier;Bitte signatur beachten ^^
@volkard: Was macht der code jetzt wirklich... ?Ich habe etweder einen zu intensiven Java squeezeout bekommen oder ich bin C/C++ noch nicht würdig

-
#include <iostream> #include <cmath> using namespace std; int main(){ typedef double funcT(double); typedef funcT* funcPtrT; funcPtrT arr1[5]; arr1[0]=&std::sqrt; cout<<(*arr1[0])(5)<<'\n'; double (*arr2[5])(double); arr2[0]=&std::sqrt; cout<<(*arr2[0])(5)<<'\n'; typedef double (*funcPtrT)(double); funcPtrT arr3[5]; arr3[0]=&std::sqrt; cout<<(*arr3[0])(5)<<'\n'; }
-
lk schrieb:
typedef int(*MyFP)(int, int); MyFP fp; MyFP *fparray; fp = eine funktion hier; fparray = new MyFP[10]; fparray[i] = eine funktion hier;So kann das ja jeder
Ich meine in einer Zeile.@volkard: Was macht der code jetzt wirklich... ?
Hat er doch geschrieben?
-
void (*array[3])(int);Aber du willst keine Arrays verwenden. Es gibt in C++ kaum einen rationalen Grund dafür. Nimm lieber
std::array, damit hast du Wertsemantik, Index- und Iteratoren-Checks im Debug-Modus und ein STL-Interface. Im Release-Modus hast du volle Performance. Falls du kein C++0x hast, kannst du auchstd::tr1::arrayoderboost::arrayverwenden.#include <array> std::array<void(*)(int), 3> array;Und
typedefist im Zusammenhang mit Funktionszeigern nie eine schlechte Wahl.
-
Nexus schrieb:
Index- und Iteratoren-Checks im Debug-Modus
Ich nehme mal an, bei Visual Studio ist das so? Im Standard steht, dass das der Implementierung überlassen bleibt, richtig?
-
314159265358979 schrieb:
Nexus schrieb:
Index- und Iteratoren-Checks im Debug-Modus
Ich nehme mal an, bei Visual Studio ist das so? Im Standard steht, dass das der Implementierung überlassen bleibt, richtig?
natuerlich. aber eine implementierung ohne checks im debug modus ist dumm und sollte nur in absolut extremer not verwendet werden.
denn genau fuer sowas haben wir ja den debug modus
-
314159265358979 schrieb:
Nexus schrieb:
Index- und Iteratoren-Checks im Debug-Modus
Ich nehme mal an, bei Visual Studio ist das so? Im Standard steht, dass das der Implementierung überlassen bleibt, richtig?
Geht aber auch bei GNU IIRC mit -D_GLIBCXX_DEBUG. Aber im Standard stehts nicht, wäre aber relativ sinnfrei sowas nicht anzubieten IMHO.